gpt4 book ai didi

azure - 如何使用 ADAL token 使用 Graph API?

转载 作者:行者123 更新时间:2023-12-02 06:32:02 25 4
gpt4 key购买 nike

在我的 Xamarin.forms 项目中,我使用 ADAL (Microsoft.IdentityModel.Clients.ActiveDirectory) 在 Azure 门户(Auth 1.0 终结点)上进行身份验证。这部分工作很好,但我需要获取用户的安全组。因此,我使用此代码并传递通过 ADAL 收到的 token :

 HttpClient client = new HttpClient();
HttpRequestMessage message = new HttpRequestMessage(HttpMethod.Get, "https://graph.microsoft.com/v1.0/me/memberOf");
message.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("bearer", token);
HttpResponseMessage response = await client.SendAsync(message);
string responseString = await response.Content.ReadAsStringAsync();

我总是收到 StatusCode:401,ReasonPhrase:“未经授权”。在我的 azure AD 应用程序注册中,我添加了 Graph API 和这些权限: enter image description here enter image description here

我想我错过了一些东西。有什么想法吗?

----- 编辑 1 ---这是我的有效载荷。为了方便起见,我将其更改为图片。我不知道如何在这里发布 json enter image description here

-----编辑2 ---哦!我懂了。我想我需要更多地了解Azure登录过程。现在,我遵循 ADAL 和 Azure 的示例,让我在后端记录并使用某些功能。所以登录过程使用:

var authContext = new AuthenticationContext(authority); var authResult = await authContext.AcquireTokenAsync(resource, clientId, uri, platformParams);

其中权限 = https://login.microsoftonline.com/mysite.com ,ResourceID 是我的后端应用程序 ID,clientID 是我的 native 应用程序 ID。所以 Shawn 是正确的,我不使用 Graph.microsoft.com 来获取 token 。我们还有其他方法来实现这一切吗?使用Graph的需要只是获取用户在应用内调整权限的AD组。

最佳答案

您的评论是正确的。如果您向应用程序添加新权限,则必须要求用户重新同意该应用程序。

您可以通过 ADAL 将 PromptBehavior 设置为 Always 来强制重新同意:

platformParams.PromptBehavior = PromptBehavior.Always

或者您可以简单地修改您的登录 URL 以通过添加查询字符串来强制执行:

&prompt=consent

在构建应用程序来帮助克服此问题方面,如果您认为您的应用程序在发布后会更改权限,您可以集成检测未经授权的逻辑,然后将用户发送给重新 -同意。

另一个选项是让您的应用跟踪可能需要新的同意提示的更改,并检测用户何时首次使用您的应用程序的新版本,并请求他们同意。

在我们的新应用程序模型 V2 中,我们支持 Incremental and Dynamic Consent 的概念,这应该可以为您解决这个问题。

关于azure - 如何使用 ADAL token 使用 Graph API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47062093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com