xam*_*mir 19 javascript c# dynamics-crm azure asp.net-web-api
我们正在做这个 CRM Web API项目.该项目登录到Dynamics CRM在线实例并获取帐户列表.
登录似乎正在发生.但是,帐户列表会出现以下错误:
AADSTS65001:用户或管理员未同意使用ID为"xxxx-xxxxx-xxxx-xxx"的应用程序.发送此用户和资源的交互式授权请求.跟踪ID:e3b360d6-39fb-4e61-87d9-26531f30fd7b相关ID:9b2cff0c-074e-44fe-a169-77c8061a7312时间戳:2016-10-18 10:12:49Z
在权限设置是否正确:
问题是什么?
juu*_*nas 32
管理员必须同意这些权限.您应该向Azure AD发出包含该参数的授权请求prompt=admin_consent.
与此处的文档一样,prompt参数可以包含3个值:login,consent或admin_consent.
因此,您应该访问https://login.microsoftonline.com/tenant-id/oauth2/authorize?client_id=app-client-id&redirect_uri=encoded-reply-url&response_type=code&prompt=admin_consent等网址.
将tenant-id替换为您的Azure AD租户ID /域名,或者如果您的应用是多租户,则将其替换为common.将app-client-id替换为您应用的客户端ID.将encoded-reply-url替换为您应用的网址编码回复网址.
构建所需URL的一种更简单的方法是进行身份验证,只需在访问Azure AD时抓取地址栏中的URL即可.然后只需添加&prompt=admin_consent到URL.
编辑:随着Azure门户的最新更新,能够直接从门户网站授予权限.
如果您转到新门户中的Azure Active Directory,请在那里找到您的应用注册,然后单击所需权限刀片下的授予权限.
小智 9
按照 Oauth V2.0。您不需要重新发送 Token API 中的 Scope 参数来生成刷新/访问令牌。您也不需要在 azure 门户中手动指定范围,它会自动列出。
它是从你的 auth_code 继承的,你可以删除范围和请求,它应该可以工作,而且一旦你解码了 access_token,你应该能够看到相同的范围,你在授权期间请求
我在使用 ADAL 的本机应用程序中遇到此错误。我已授予所有正确的权限,但已从之前的登录中收到了令牌。我的问题是以前的令牌已经过时并且不包含更新的声明。对我来说,解决方案是按照下面的代码使用 PromptBehavior.RefreshSession 。
AuthenticationResult result = await authenticationContext.AcquireTokenAsync(resourceId, clientId, redirectURI, new PlatformParameters(PromptBehavior.RefreshSession, false));
Run Code Online (Sandbox Code Playgroud)
根据MSDN,PromptBehavior.RefreshSession“重新授权(通过显示 webview)资源使用,确保生成的访问令牌包含更新的声明。如果用户登录 cookie 可用,则不会再次要求用户提供凭据,并且登录对话框将自动关闭。”
| 归档时间: |
|
| 查看次数: |
24306 次 |
| 最近记录: |