2017-02-16 8 views
1

auth0 winformserverauthorization extensionを使用して、winformクライアントからweb apiサービスへのロール認証を設定しようとしています。webapiとwinformクライアントのauth0ロール認証

Winフォームから、私はaccess_tokenは、その役割(admin)を認証し、取得することができます

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

WEBAPIへの呼び出しでトークンを渡す、それが[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} 

なぜトークンからロールが消えたのでしょうか?

答えて

1

解決済み。問題は範囲(https://auth0.com/docs/scopes)です。

デフォルトのスコープはopenidであり、トークンにはiss、sub、aud、exp、およびiatの各クレームのみが含まれています。役割を埋め込むためにscope = openid rolesを設定する必要があります。

var user = auth0.LoginAsync(this, "", "openid roles"); 
関連する問題