Hof*_*nia 6 azure azure-active-directory
我们使用应用程序客户端凭据通过 Azure AD 进行身份验证。
当我们这样做时Identity.Name是null。这是因为没有映射到 JWT 的名称声明。
我们发现您可以映射自定义声明,如下所示:Azure Active Directory 中的声明映射。
将策略应用于应用程序时,下次进行身份验证时会收到错误:
“AADSTS50146:需要使用特定于应用程序的签名密钥配置此应用程序。”
很酷,不过有一种方法可以解决这个问题:New-AzureADApplicationKeyCredential。它表明您可以在您的应用程序中创建一个对称签名密钥,瞧——我们现在有一个带有自定义声明的 JWT。
问题未解决:它生成带有 HS256 标头的 jwt,而不是所需的 RS256 算法。
当我尝试针对应用程序授权 jwt 时。它失败了,未经授权。
现在我卡住了,我可以映射自定义声明,但无法授权 jwt :(
我有办法解决这个问题吗?
最好记住在 Azure 的应用程序注册清单中将 acceptMappedClaims 设置为 true。
我们的应用程序使用:
UseWindowsAzureActiveDirectoryBearerAuthentication(
new WindowsAzureActiveDirectoryBearerAuthenticationOptions
Run Code Online (Sandbox Code Playgroud)
将应用程序更改为:
UseJwtBearerAuthentication(
new Microsoft.Owin.Security.Jwt.JwtBearerAuthenticationOptions
Run Code Online (Sandbox Code Playgroud)
允许我们授权 JWT 令牌。考虑到索赔映射功能处于预览状态;我暂时将此作为答案。假设该功能发布后,我们可以添加非对称应用程序签名密钥。
现在,我很高兴将 appid 声明(并且不需要自定义声明映射)映射到名称声明,如下所示:
JwtSecurityTokenHandler.InboundClaimTypeMap.Add("appid", System.Security.Claims.ClaimTypes.Name);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3785 次 |
| 最近记录: |