gpt4 book ai didi

Azure AAD - 受众无效

转载 作者:行者123 更新时间:2023-12-04 13:57:44 27 4
gpt4 key购买 nike

我创建了一个使用 Azure Active Directory 保护的 WebAPI。我现在需要对此进行测试并尝试将 fiddler 与授权 header 一起使用。我正在尝试使用以下代码生成 token 。

Target obj = (Target)cmbTarget.SelectedItem;

AuthenticationResult authenticationResult;
string aadInstance = obj.AADInstance; // "https://login.windows.net/{0}";
string tenant = obj.Tenant; //"rudderless.onmicrosoft.com";
string apiResourceId = obj.ApiResourceId; //"15b4ac7f-23a8-4958-96a5-64159254690d";
string clientId = obj.ClientId; // "47cdc6c3-226a-4c38-b08e-055be8409056";

Uri redirectUri = new Uri(obj.RedirectUri); //new Uri("http://nativeclient");
string authority = string.Format(aadInstance, tenant);
authContext = new AuthenticationContext(authority);

authenticationResult = this.authContext.AcquireToken(apiResourceId,
clientId, redirectUri, PromptBehavior.Always);

txtToken.Text = authenticationResult.AccessToken;
Clipboard.SetText($"Bearer {txtToken.Text}");

我成功生成了 token ,当我使用 token 调用 webapi 时,它抛出 401 消息

WWW-Authenticate: Bearer error="invalid_token", error_description="The audience is invalid"

最佳答案

我认为重新审视身份验证的不同步骤很重要,希望通过讨论您能够解决遇到的问题。

当客户端尝试获取资源的访问 token 时,它需要向 AAD 指定它想要获取哪个资源的 token 。客户端可以配置为调用多个资源,所有资源都具有不同的配置,因此期望资源始终在访问 token 请求中指定。

资源可以是资源的应用程序 ID GUID,也可以是在资源上注册的有效应用程序 ID URI。 AAD 应该能够根据您提供的值(value)唯一地识别您要尝试访问的资源。但请注意,如果您使用应用程序 ID GUID,您将从 AAD 获得一个 token ,其中受众声明是应用程序 ID GUID。或者,如果您使用应用程序 ID URI,您将看到该 URI 作为 token 中的受众声明。

在这两种情况下,您都将获得“相同”资源的 token ,但 token 中的声明将显示不同。此外,单个应用程序资源可能在其应用程序上注册了多个应用程序 ID URI。根据您在身份验证请求中使用的受众声明,您将在 token 中获得不同的受众声明,该声明与您传入的资源参数相匹配。

最后,一旦获得 token ,您就可以将其发送到资源 API,资源 API 将验证 token 的许多内容,例如:客户端 ID 声明、范围/角色声明、身份验证方法('acr ' 声明),并且绝对观众声明符合他们的期望!

这意味着资源 API 最终需要说“我接受 作为有效的受众声明”...或“我接受 作为有效的受众声明”。这种逻辑可能内置于您正在使用的库(如 OWIN)中,但您需要确保在 API 端,您已针对您期望的受众正确配置了它。如果您愿意,您可以让您的 API 根本不检查受众声明! token 中的所有声明都是纯文本,因此您确实可以做任何您想做的事情,但在这种情况下您不会有一个非常安全的 API :]

一天结束时,我的预感是这个错误来自您自己的 API,并且发生这种情况是因为您尚未将应用程序配置为接受与您的资源的应用程序 ID GUID 匹配的受众声明(它看起来像什么)当您根据代码示例获得 token 时,您就通过了)。

希望这能解决您的问题!

关于Azure AAD - 受众无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40336275/

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