2017-06-19 107 views
1

我想从使用注册的应用程序clientCredentials的Azure数据目录中检索数据。我可以得到一个承载令牌罚款,但是当我试图使用令牌与Azure的数据目录API,我得到 -使用客户端来自注册的Azure ADD应用程序的凭证访问Azure数据目录API

WWW-Authenticate: Bearer realm="svc", error="InsufficientScope", error_description="A token with user_impersonation scope is required.", scope="user_impersonation" 
X-Powered-By: ASP.NET 

401 - Unauthorized: Access is denied due to invalid credentials. 
You do not have permission to view this directory or page using the credentials that you supplied. 

我已经放弃对广告和ADC应用程序的权限,并且还增加了一个贡献者AD中应用程序的角色。

不知道为什么会发生这种情况...驱使我坚果。

我可以在控制台应用程序中使用用户密码凭据获得此工作,但当我尝试在Web应用程序中执行此操作时,这种情况会崩溃。

欢呼声

+1

访问权限一些角色错误是说你的电话没有范围。我猜测范围可能是一个委托权限。在这种情况下,您不能仅使用客户端凭证进行呼叫,因为它需要*委托呼叫*。使用Web应用程序,您应该使用授权代码授予而不是客户端凭据。 – juunas

+0

@juunas,你要补充一点,作为一个答案,我会给予好评,因为你说的话是正确的:) – Saca

+0

增加,问题可能涉及到,但我无法测试,以确保:) – juunas

回答

1

错误是说你的电话没有范围。我猜测范围可能是一个委托权限。在这种情况下,您只能使用客户端凭证进行呼叫,因为它需要委托呼叫。使用Web应用程序,您应该使用授权代码授予而不是客户端凭据。

1

我们目前不支持使用ClientCredentials进行授权。您需要使用用户名/密码登录,以便令牌包含用户特定的信息以便在目录上进行授权。

_authResult =等待authContext.AcquireTokenAsync(resourceUri,的clientId,新的URI(redirectUri),新PlatformParameters(PromptBehavior.Always))

希望这有助于 莫妮卡

0

申请许可是基于客户端凭证。基于登录用户权限的委托权限。

在此数据目录中没有任何应用程序权限。所以,你不能在基于窗口的应用程序中无需登录。

如果你需要不用登录弹出你authContext.AcquireTokenAsync()方法也传递用户名和密码没有提示。

enter image description here

enter image description here

所以,你会得到401 - 未经授权:访问被拒绝由于无效 凭据。

因为,登录令牌不包含任何用户specfic信息和角色,如果你有一个的accessToken查一下jwt.io网站插入你编码的令牌在左侧右侧显示该令牌信息。它包含了该权限简化版,包含您的令牌,因此它是抛出未经授权凭证无效

i显示了例如访问令牌下面许可

enter image description here

公司希望它有助于您

相关问题