当前位置: 首页 > 知识库问答 >
问题:

Web API中的Azure身份验证-角色声明在验证后丢失

邵凯定
2023-03-14

我想在我们的Web API中基于Azure AD应用程序角色进行用户授权,但这些角色不会转化为实际声明,即使我可以在令牌验证响应中看到它们。

我可以看到ClaimsMain中的角色。当前。声明列表,但在属性名称角色下,而不是声明模式下http://schemas.microsoft.com/ws/2008/06/identity/claims/role.

我已经设法通过将RoleClaimType设置为“角色”来获得授权属性来识别角色。

但是我如何让Azure返回角色,或者配置API来解释它们,以便HasClaim(ClaimTypes.Role,“AdminRole”)返回true?

控制器。反恐精英

[Authorize(Roles = "AdminRole")]
public IEnumerable<Item> Get()
{
    var a = ClaimsPrincipal.Current.HasClaim( ClaimTypes.Role, "AdminRole" ); // false
    var b = User.IsInRole( "AdminRole" ); // true
}

启动。反恐精英

public void ConfigureAuth( IAppBuilder app )
{
   app.UseWindowsAzureActiveDirectoryBearerAuthentication(
    new WindowsAzureActiveDirectoryBearerAuthenticationOptions
    {
        Tenant = ConfigurationManager.AppSettings[ "ida:Tenant" ],
        TokenValidationParameters =
            new TokenValidationParameters
            {
                ValidAudience = ConfigurationManager.AppSettings[ "ida:Audience" ],
                RoleClaimType = "roles" // makes this work: User.IsInRole( "AdminRole" )
            }
    } );
}

Azure门户

  • 注册了Web API和本机WPF客户端应用程序,并修改了Web API的清单,使其包含两个角色。"Azure门户/应用注册/编辑清单"
  • 向Web Api应用程序添加/分配了一些用户,并指定了一个或另一个角色。"Azure门户/企业应用程序/[应用程序名称]-用户和组"

对于所有读到这里的人——提前感谢!

共有1个答案

西门正平
2023-03-14

Azure AD发出的声明类型为角色,需要将RoleClaimType(在TokenValidationParameters中)设置为角色,然后可以进行以下验证:

    var a = ClaimsPrincipal.Current.HasClaim("roles", "AdminRole"); 
    var b = User.IsInRole("AdminRole"); 
 类似资料:
  • 我正在尝试在 Swift 中创建一个 iOS 应用程序,该应用程序使用 AWS Lambda 使用以下身份验证服务 - https://github.com/danilop/LambdAuth 它使用适用于 iOS 的 AWS 移动开发工具包与迪纳摩数据库和 Lambda 进行通信 - http://docs.aws.amazon.com/mobile/sdkforios/developergui

  • 当我将令牌粘贴到这个网站上的JWT调试器中时:https://JWT.io/,我得到了一些信息(stable_sid,sid,sub,idp,ver,iss,aud,exp,nbf),但我似乎无法得到其中的组声明。 我在Azured AD中添加了读取Microsoft graph和Azure active directory组所需的权限,但它没有改变令牌中的任何内容。 我缺少什么来获取用户组?

  • 我们有一个使用社交网络身份验证的Azure移动应用。尝试使用自定义令牌处理程序将用户角色添加为声明。 这一切都可以在localhost上运行——令牌被添加到令牌处理程序中,并且在调用AuthorizationAtinn OnAuthoration方法时可用。具有指定角色的授权属性按预期工作。 但是当运行的是Azure时——声明被添加,但当调用OnAuthorization方法时,自定义角色声明就消

  • 我试图为AWS实现“开发人员身份验证身份”,如下所示:https://AWS.amazon.com/blogs/mobile/amazon-cognito-innecling-developer-authenticated-identities/ 我很好地理解了基本流程。 我怎样才能做到这一点?

  • 身份验证 PDF版下载 企业应用中的URL链接可以通过OAuth2.0验证接口来获取员工的身份信息。 通过此接口获取员工身份会有一定的时间开销。对于频繁获取员工身份的场景,建议采用如下方案: 企业应用中的URL链接直接填写企业自己的页面地址; 员工跳转到企业页面时,企业校验是否有代表员工身份的cookie,此cookie由企业生成; 如果没有获取到cookie,重定向到OAuth验证链接,获取员工

  • 本文向大家介绍asp.net mvc中Forms身份验证身份验证流程,包括了asp.net mvc中Forms身份验证身份验证流程的使用技巧和注意事项,需要的朋友参考一下 验证流程 一、用户登录 1、验证表单:ModelState.IsValid 2、验证用户名和密码:通过查询数据库验证 3、如果用户名和密码正确,则在客户端保存Cookie以保存用户登录状态:SetAuthCookie     1