【问题标题】:Can I trust ClaimsPrincipal from an Authorized route我可以信任来自授权路线的 ClaimsPrincipal
【发布时间】: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


    【解决方案1】:

    所以,我想知道我获得的 Controller 的 ClaimPrincipals(作为 User 属性)是否可信。

    是的。默认情况下,OpenIddict 使用 ASP.NET Core 数据保护和 ASP.NET Core 提供的身份验证票证序列化程序(cookie 中间件用于保护身份验证 cookie)创建和验证其访问令牌。

    这些令牌经过加密和 HMAC 处理,因此攻击者无法更改其内容。更多信息可以阅读https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/introduction

    【讨论】:

      猜你喜欢
      • 2021-03-31
      • 2011-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-22
      • 2021-04-30
      • 1970-01-01
      • 2013-02-12
      相关资源
      最近更新 更多