私はASP.NET Core APIでAzure ADベーシック層を使用していますが、私はRBAC sampleに従っています。私はそうのように私のマニフェストの役割を持つアプリケーションを設定している:Azure Active Directory RBACがベアラトークンでロールを返さない
appRoles": [
{
"allowedMemberTypes": [ "User" ],
"displayName": "Read Device",
"id": "b2e6f6c2-c3d5-4721-ad49-0eea255ccf45",
"isEnabled": true,
"description": "Can read a device.",
"value": "read_device"
},
...
]
私はそうのようなUseJwtBearerAuthentication
ミドルウェアを使用するように設定私のAPIました:私は私のユーザー与えてくれた
application.UseJwtBearerAuthentication(
new JwtBearerOptions()
{
AuthenticationScheme = "Azure Active Directory",
Authority = options.Authority,
Audience = options.ClientId,
TokenValidationParameters = new TokenValidationParameters()
{
RoleClaimType = "roles",
ValidateIssuer = false
}
})
を「読み取りデバイスの役割上:
私は、認証トークンを取得するための呼び出しを行うために闊歩UIを使用しています。これは、次のURLを呼び出します:
https://login.microsoftonline.com/[Tenant].onmicrosoft.com/oauth2/authorize?
response_type=token
&redirect_uri=http%3A%2F%2Flocalhost%3A5100%2Fswagger%2Fo2c.html
&realm=-
&client_id=[Client ID]
&scope=http%3A%2F%2Fschemas.microsoft.com%2Fws%2F2008%2F06%2Fidentity%2Fclaims%2Frole
&state=oauth2
&resource=[Client ID]
私はscope
パラメータに正しい値を渡しておりませんので、私は、私は考えることができるすべてのscope
を求めて試してみましたことを疑わ:
&scope=openid
%20email
%20profile
%20offline_access
%20user_impersonation
%20roles
%20http%3A%2F%2Fschemas.microsoft.com%2Fws%2F2008%2F06%2Fidentity%2Fclaims%2Frole
%20read_device
場合I私のマニフェストに"groupMembershipClaims": "All"
を設定してください。私はグループの主張を見ることができますが、代わりに役割が必要です。私は私のAPIを呼び出すためにログインすることができますが、JWTトークンでは何の役割も返さないので、ユーザーの役割を確認できません。私は間違って何をしていますか?
あなたはその役割を持つアプリにユーザーを割り当てましたか? – juunas
どのようにアクセストークンを取得していますか?それを表示できますか?それが承認コード許可フローまたは類似の委任された呼び出しであれば、それはうまくいくはずです。 – juunas
@juunasコードスニペットで質問を更新しました。 –