【发布时间】:2018-05-05 13:21:32
【问题描述】:
我正在使用 OpenIdDict 和 Aspnet core 2.0 Identity。我已将其(目前)配置为使用密码流(资源所有者密码凭据授予)。客户端是我制作的 Angular SPA。我可以控制客户端和服务器。
我目前正在编写一个自定义 AuthorizationHandler 并且到目前为止它运行良好。
但是,我有点担心自己的 ClaimsPrincipal。 我的安全 WebAPI 方法用 Authorize 属性装饰
[Authorize(AuthenticationSchemes = AuthValidationDefaults.AuthenticationScheme)]
据我了解,如果我在我的授权中添加一个策略,我得到的上下文与我的控制器的上下文相同。它有一个“用户”属性,我可以从中调用“HasClaims”。
我向我的校长添加了一些“许可”类型的声明,它们确实出现了。
这个 ClaimPrincipals 是简单地通过解码从 SPA 传递的不记名令牌构建的吗?如果是这样,相信这个声明列表在服务器端做任何事情似乎是不安全的......但是,承载令牌是 access_token 而不是 id_token 并且不能简单地在https://jwt.io/上解码
我可以使用 UserManager/RoleManager 为登录的用户获取我在服务器端的所有声明,然后使用该列表进行验证。但是,我担心这样做可能会出现性能问题...
所以,我想知道我获得的 Controller 的 ClaimPrincipals(作为 User 属性)是否可信,或者我是否应该自己获得声明。
【问题讨论】:
标签: asp.net-identity asp.net-core-2.0 asp.net-core-webapi openiddict