gpt4 book ai didi

azure - 使用 Microsoft Graph token 对应用服务后端进行身份验证?

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

编辑:

我已添加“id_token”,但仍然收到“未经授权”响应。这是我的登录代码:

PublicClientApplication myApp = new PublicClientApplication("My-AppID-From-App-Registration-Portal");
string[] scopes = new string[] { "User.Read" };
AuthenticationResult authenticationResult = await myApp.AcquireTokenAsync(scopes).ConfigureAwait(false);

JObject payload = new JObject();
payload["access_token"] = authenticationResult.AccessToken;
payload["id_token"] = authenticationResult.IdToken;

user = await MobileService.LoginAsync(MobileServiceAuthenticationProvider.MicrosoftAccount, payload);

原帖:

是否可以使用从 Microsoft Graph 检索到的 token 对应用服务后端进行身份验证?我已经尝试使用此 token 并使用 AzureActiveDirectory 作为提供程序调用 LoginAsync(),但这不起作用。

JObject payload = new JObject();
payload["access_token"] = GraphAuthenticationHelper.TokenForUser;
user = await MobileService.LoginAsync(MobileServiceAuthenticationProvider.WindowsAzureActiveDirectory, payload);

这可能吗?

最佳答案

更新:在我最初的回答中,我说你不能这样做。但实际上,您可以这样做,但这是一件危险的事情,因为理论上任何拥有有效 Microsoft Graph token 的人都可以访问您的 API。在引导您走上这条路之前,让我先介绍一下代表最终用户访问 Microsoft Graph 的“正确”方法。

执行此操作的正确方法是使用移动后端代码中的代表流将用户的 ID token 交换为 Microsoft Graph token 。流程如下所示:

  1. 客户端使用 MSAL 启动 AAD 登录,并将资源设置到移动后端(而不是图表)。结果应该是一组标记。
  2. 客户端使用移动 SDK 使用 #1 中的 access_token 和 id_token 进行登录。

示例代码:

JObject payload = new JObject();
payload["access_token"] = {access_token.from.msal};
payload["id_token"] = {id_token.from.msal};
var user = await MobileService.LoginAsync(
MobileServiceAuthenticationProvider.WindowsAzureActiveDirectory,
payload);
  • 后端代码将用户的 ID token (来自 x-ms-token-aad-id-token 请求 header )交换为图形 token 。这种代币交换被称为“代表”,并记录在here中。 。我认为这可以使用 ADAL 或 MSAL 库来完成,但我找不到文档。它也足够简单,您可以直接实现 HTTP 协议(protocol),而不需要太多麻烦。
  • 后端使用新获取的 MS Graph token 并进行图形 API 调用。
  • 您还可以在后端缓存您获取的图形 token ,以便每个 API 调用不需要更多的 AAD API 调用来进行 token 交换。

    关于azure - 使用 Microsoft Graph token 对应用服务后端进行身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44204139/

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