首页 > 解决方案 > Auth0 - 在 Owin 上使用带有承载访问令牌的 JWT 使用 RS256 进行身份验证

问题描述

在使用普通嵌入式登录实现 Auth0 身份验证/授权时,我能够对用户进行身份验证并取回有效的accessToken/idToken

我的问题

上面的服务器代码不会授权用户。但如果我将ValidAudience = "https://xxx.auth0.com/api/v2/"ie 设置为 Auth0 API Identifier,则 API 方法成功授权(状态 200)用户。

但是这次它不会给ClaimsIdentity.ClaimsClaimTypes.Email

我在这里想念什么?

标签: asp.net-web-api2owinauth0

解决方案


我的错:

  1. 我应该将ApiIdentifier传递给ValidAudience值。
  2. 当我在授权用户时传递accessToken时,当 accessToken 声明不包含 ClaimTypes.Email 时,我需要将 Auth0 中的规则设置为:如何在 Auth0 中设置规则。稍后我可以将我的服务器 api 逻辑检查为(下面的代码)以验证用户。
    (User.Identity as ClaimsIdentity)?.Claims.FirstOrDefault(c => c.Type == "you-have-set-this-rule-in-auth0")?.Value;

只是附加组件,在实现 Auth0 时值得一读的链接。Auth0 提供了一个不错的 nuget 包Auth0.OpenIdConnectSigningKeyResolver,它在上面提供的链接中有很好的用途。


推荐阅读