gpt4 book ai didi

azure - Multi-Tenancy Web api 的 401 未经授权异常

转载 作者:行者123 更新时间:2023-12-03 04:24:57 25 4
gpt4 key购买 nike

需要帮助验证从任何客户端应用程序到 WEB API 的 token 请求。我们已在 Azure AAD 中注册了具有 Multi-Tenancy 应用程序的 Web API。我已在不同租户中注册的客户端应用程序能够从 AAD 获取访问 token 。在通过传递请求 header 的访问 token 部分向我们的端点发出 Http 请求时,我们收到 401 未经授权的异常。我在浏览 Multi-Tenancy 场景时发现原因是禁用 ValidateIssuer 并拥有自定义处理程序。

• 是否有任何自定义处理程序可实现WindowsAzureActiveDirectoryBearerAuthentication。我看到人们正在使用 OpenIDConnect。但对于 WEB API,我们使用 WindowsAzureActiveDirectoryBearerAuthentication 即是否有任何等效的事件用于在 UseWindowsAzureActiveDirectoryBearerAuthentication 中验证访问 token 并告诉用户已通过身份验证?

• 是否有更好的访问 token 验证标准并告诉用户是有效用户?

• 我们可以通过将不记名 token 传递给 WEBAPI 授权过滤器来获取用户的声明吗?或者 httprequest 对象声明会获取用户信息,如给定名称、租户名称、对象 ID(特别是本地主机调试场景),如果我们可以获得这些信息,我们就可以拥有自己的验证逻辑。

请告诉我们此方法是否是验证用户身份的最佳实践。

最佳答案

您可以实现自定义颁发者验证器并将其分配给 IssuerValidator 属性。当您无法在配置中指定预定义的发行者列表并且需要一些运行时逻辑来确定您是否信任 token 中提供的发行者时,这非常有用:

TokenValidationParameters = new System.IdentityModel.Tokens.TokenValidationParameters
{
IssuerValidator = (issuer, token, tvp) =>
{

if (db.Issuers.FirstOrDefault(b => (b.Issuer == issuer)) == null)
return issuer;
else
throw new SecurityTokenInvalidIssuerException("Invalid issuer");
}
}

您可以解码访问 token 以获取基本用户信息,例如 family_name/given_name ,但只能通过使用用户身份获取访问 token 来获取这些信息。

关于azure - Multi-Tenancy Web api 的 401 未经授权异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44455908/

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