C# webapi和winform客户端的auth0角色身份验证

C# webapi和winform客户端的auth0角色身份验证,c#,winforms,asp.net-web-api,auth0,C#,Winforms,Asp.net Web Api,Auth0,我正在尝试使用auth0,,,设置从winform客户端到web api服务的角色身份验证 从winform,我可以验证并获取access_令牌及其角色(管理员) 在调用webapi时传递令牌,它可以传递[Authorize],但不能传递[Authorize(Roles=admin)] 查看函数JsonWebToken.cs\ValidateToken,我发现payloadData只有很少的值,但根本没有角色: {"iss":"https://xxx.au.auth0.com/","sub":"

我正在尝试使用auth0,,,设置从winform客户端到web api服务的角色身份验证

从winform,我可以验证并获取access_令牌及其角色(管理员)

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

查看函数
JsonWebToken.cs\ValidateToken
,我发现
payloadData
只有很少的值,但根本没有
角色

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

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

已解决。问题在于作用域()

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

var user = auth0.LoginAsync(this, "", "openid roles");
{"iss":"https://xxx.au.auth0.com/","sub":"auth0|57e37cc190da2a82c5d6","aud":"2W81KYrbHJ8MjPYd2WVyVrH3","exp":1487259046,"iat":1487223046}
var user = auth0.LoginAsync(this, "", "openid roles");