多对多身份验证模式

时间:2016-09-23 14:56:28

标签: security authentication oauth openid azure-active-directory

我正在尝试为一个非常不寻常的场景提出身份验证方案。

我有多个Azure Active Directory(可能有几十个)和多个Web API服务。 客户可以注册/登录任一AD,然后能够使用任一服务对请求进行身份验证。

直接的解决方案要求我使用有关所有AD的信息配置我的所有服务。 这种多对多的关系就是我想要避免的。

我考虑过构建集中式令牌交换服务器的解决方案,该服务器将发出规范化令牌,但我不确定这种方法有多安全,我宁愿使用“开箱即用”解决方案而不是实施我自己的。

你会如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

multi-tenancy support of Azure AD旨在解决您的问题。

首先,您将服务作为Azure AD中的多租户应用程序发布。然后租户目录管理员通过同意流程订阅应用程序。

您的服务需要将ValidateIssuerTokenValidationParameters属性设置为false,以禁用检查令牌的颁发者。

现在,用户可以使用任何目录登录,前提是他们同意该应用程序。要将此限制仅限于您想要的目录,您可以向IssuerValidator添加TokenValidationParameters委托。

IssuerValidator = (issuer, token, params) =>
{
    if (_db.FindIssuer(issuer) != null)
        return issuer;
    else
        throw new SecurityTokenInvalidIssuerException("Not a valid issuer");
},