gpt4 book ai didi

active-directory - 使用 OWIN Active Directory 不记名 token 启用多个租户

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

我最近开始使用 Azure Active Directory 来根据我基于 AngularJS 构建的网站对用户进行身份验证。

使用博客和 sample code on GitHub ,我已经使用 ADAL.js 的组合使其与单租户一起工作和武士刀的 Bearer Token AD integration .

但是,我现在在支持多个租户方面遇到了一些问题。

我有一个页面设置,显示 ADAL 看到的用户(通过根范围的 userInfo 找到),并调用我的服务器,由 OWIN 接收,并序列化 context.Authentication.User .

客户端,一切似乎都正常工作。我可以使用我的任何租户登录,它为我提供了我期望的对象(填充了 isAuthenticated: trueusername 以及在 profile 上描述用户、登录名和租户的各种属性)。

这是通过忽略 tenant 在客户端完成的。争论我的 adalAuthenticationServiceProvider.init调用,如文档中所述。

服务器端,然而,UseWindowsAzureActiveDirectoryBearerAuthentication方法不喜欢没有值 Tenant (因为它抛出异常)。我为此尝试了一些值,包括我的应用程序最初注册的租户,以及我逻辑上最喜欢的“common”,但无论我在那里放什么(除非它是我尝试登录的租户)与,如果我的 ADAL 是与该租户一起设置的),它似乎只是跳过了这一点。

值得一提的是,实际的 API 调用在 [Authorize] 上失败了。过滤并返回 401,这告诉我这不是我的 OWIN 拦截器的问题。

我怎么知道UseWindowsAzureActiveDirectoryBearerAuthentication支持 Multi-Tenancy 身份验证?

最佳答案

我在写这个问题时想到了这一点。我认为。但是我花了一整天的时间发现几乎没有关于此事的文档,所以我想我还是会发布它。

我的解决方案(通过 yet another blog post 找到)是包含 ValidateIssuer = false作为参数。这是有道理的,因为我们不再想验证给我们一个 token 的租户是我们列出的那个。

这是我解决问题的代码。

app.UseWindowsAzureActiveDirectoryBearerAuthentication(
new WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
TokenValidationParameters = new TokenValidationParameters
{
ValidAudience = ConfigurationManager.AppSettings["ida:Audience"],
ValidateIssuer = false // This line made it work
},
AuthenticationMode = Microsoft.Owin.Security.AuthenticationMode.Active,
Tenant = "common" // I don't know whether this has any impact,
// but it's a required parameter regardless.
});

如果有任何不可预见的情况,我很乐意如果其他人想要纠正我 - 当您进行身份验证时,将“验证”开关切换到关闭状态有点令人生畏。但我认为这一切都是有道理的。

关于active-directory - 使用 OWIN Active Directory 不记名 token 启用多个租户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32940658/

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