【问题标题】:auth0 role authentication for webapi and winform clientwebapi和winform客户端的auth0角色认证
【发布时间】:2017-07-05 02:12:53
【问题描述】:

我正在尝试使用 auth0 winform、server、authorization extension 设置从 winform 客户端到 Web api 服务的角色身份验证。

通过 winform,我可以进行身份​​验证并获取 access_token 及其角色(管理员)

    var auth0 = new Auth0Client(
                  "xxx.au.auth0.com",
                  "1Zf2W81KYrbHJ8MjPYd...");
    var user = auth0.LoginAsync(this);
    access_token = user.Result.IdToken

在调用webapi时传递token,可以传递[Authorize]但不能传递[Authorize(Roles=admin)]

var client = new RestClient("http://localhost:61758/api/values");
            var request = new RestRequest(Method.GET);
            request.AddHeader("Authorization", string.Format("Bearer " + access_token));

查看函数JsonWebToken.cs\ValidateToken,我发现payloadData只有几个值,但根本没有roles:

{"iss":"https://xxx.au.auth0.com/","sub":"auth0|57e37cc190da2a82c5d6","aud":"2W81KYrbHJ8MjPYd2WVyVrH3","exp":1487259046,"iat":1487223046}

知道为什么角色会从令牌中消失吗?

【问题讨论】:

    标签: c# winforms asp.net-web-api auth0


    【解决方案1】:

    已解决。问题在于范围(https://auth0.com/docs/scopes)。

    默认范围是openid,并且令牌仅包括 iss、sub、aud、exp 和 iat 声明。我们需要设置 scope=openid roles 以嵌入角色。

    var user = auth0.LoginAsync(this, "", "openid roles");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-06
      • 1970-01-01
      • 1970-01-01
      • 2012-09-18
      • 1970-01-01
      相关资源
      最近更新 更多