在 MSAL 中获取不同的访问令牌从设备代码流中获取令牌
Getting different access tokens in MSAL get token from device code flow
我有一个控制台应用程序,用于对用户进行身份验证,然后调用 Web API。我正在使用此 Microsoft 库获取令牌,active-directory-dotnetcore-devicecodeflow-v2, I registered both of my console application and API in Azure AD and gave the permissions and role needed based on this doc : GitHub readme,因此我在 Azure 中的控制台应用程序注册中拥有如下权限。
现在,当我在范围列表中添加新范围 "http://{domain}/Migratory.API/api.access"
并调用 "AcquireATokenFromCacheOrDeviceCodeFlowAsync"
方法时,出现了一些冲突:
如果我第一次调用该方法,它会调用 "GetTokenForWebApiUsingDeviceCodeFlowAsync"
结果不包含我的范围,它只包含 "User.Read , User.ReadBasic.All, All profile openid email"
,但如果我再次调用该方法,这次它会调用“AcquireTokenSilent"
方法,而这个方法在作用域中只有 "http://{domain}/Migratory.API/api.access"
。结果它会生成两个不同的标记,我不明白为什么。
知道我应该如何解决这个问题或哪里做错了吗?
谢谢
My permissions in Azure
你得到的第一个token是用来调用ms graph的api,User.Read User.ReadBasic.All profile openid email
这些是graph api的权限,所以这个token显然不适合你。你的第二个令牌就是你需要的。
对了,这两种不同的api资源的权限不能同时出现在一个token中,因为一个token只能调用一个api资源。
我有一个控制台应用程序,用于对用户进行身份验证,然后调用 Web API。我正在使用此 Microsoft 库获取令牌,active-directory-dotnetcore-devicecodeflow-v2, I registered both of my console application and API in Azure AD and gave the permissions and role needed based on this doc : GitHub readme,因此我在 Azure 中的控制台应用程序注册中拥有如下权限。
现在,当我在范围列表中添加新范围 "http://{domain}/Migratory.API/api.access"
并调用 "AcquireATokenFromCacheOrDeviceCodeFlowAsync"
方法时,出现了一些冲突:
如果我第一次调用该方法,它会调用 "GetTokenForWebApiUsingDeviceCodeFlowAsync"
结果不包含我的范围,它只包含 "User.Read , User.ReadBasic.All, All profile openid email"
,但如果我再次调用该方法,这次它会调用“AcquireTokenSilent"
方法,而这个方法在作用域中只有 "http://{domain}/Migratory.API/api.access"
。结果它会生成两个不同的标记,我不明白为什么。
知道我应该如何解决这个问题或哪里做错了吗? 谢谢
My permissions in Azure
你得到的第一个token是用来调用ms graph的api,User.Read User.ReadBasic.All profile openid email
这些是graph api的权限,所以这个token显然不适合你。你的第二个令牌就是你需要的。
对了,这两种不同的api资源的权限不能同时出现在一个token中,因为一个token只能调用一个api资源。