【问题标题】:How to add Azure AD authentication to existing .net web site如何将 Azure AD 身份验证添加到现有 .net 网站
【发布时间】:2017-08-22 13:36:34
【问题描述】:

我有一个使用 ADFS 身份验证 (System.IdentityModel.dll) 的现有 .net Web 表单站点,该站点具有不同的自定义域,每个客户一个域。在 Global.asax.cs 中,我将用户重定向到他们相应的 ADFS 端点。

void WSFederationAuthenticationModule_RedirectingToIdentityProvider(object sender, RedirectingToIdentityProviderEventArgs e)
{
  if (org == "customername1")
  {
    strWhr = "http://adfs.customername1.com/adfs/services/trust";
    e.SignInRequestMessage.HomeRealm = strWhr;
  }
}

现在我需要添加 Azure AD 身份验证,因为已经设置了身份验证,所以无法使用 Visual Studio 向导。

有什么方法可以重用我所拥有的并将用户重定向到相应的 Azure AD,例如将 HomeRealm 设置为 https://login.windows.net/tenatName

我不想在 ADFS 和每个新客户 Azure AD 之间添加信任,至少从现在开始,如果可能的话,我希望同时进行 ADFS 和 Azure AD 身份验证。

使用组织帐户身份验证通过 VS 创建的站点在 Startup.Auth.cs 文件中进行身份验证配置,这是我必须与使用 Owin dll 一起做的事情 em>?

【问题讨论】:

    标签: c# .net azure azure-active-directory adfs


    【解决方案1】:

    标准方式是通过 OWIN。参考this

    看起来您正在使用 WS-Fed。

    我想不出 WIF 无法工作的原因,但我不知道有此示例。

    【讨论】:

    • 你说得对,OWIN 适用于这两种协议,而且是最新的,我们应该使用它。我将分享我的解决方案,但感谢您的意见并为我指明正确的方向。
    【解决方案2】:

    如果可能,我希望同时进行 ADFS 和 Azure AD 身份验证。

    目前 Azure AD 的设计方式,只有当应用程序也作为基于 Azure 云的服务运行时,上述组合才有效。这是链接的内容。

    “将 Active Directory 和任何其他本地目录扩展到 Azure AD,以便为所有基于云的应用程序启用单点登录。”

    https://azure.microsoft.com/en-us/services/active-directory/

    我假设您的应用程序在前提下运行,这意味着您可能无法将它们混合在一起。

    【讨论】:

    • 否 - 我的 PC 上有可通过 AAD 验证的样本。
    • 是的,它可以在本地运行项目,到目前为止我所有的测试都是使用 localhost 完成的。
    【解决方案3】:

    没有真正回答我的问题,因为我将创建一个新项目并复制网页内容。 我正在测试一个潜在的解决方案,看起来不太好,但它确实有效。这可能是另一种更好的方法,所以我愿意接受。

    if (org == "customername1")
    {
    app.UseWsFederationAuthentication(new WsFederationAuthenticationOptions
    {
        Wtrealm = realm,
        MetadataAddress = adfsMetadata,
    });
    }
    else if (org == "customername2")
    {
    app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
    {
        ClientId = clientId,
        Authority = authority,
        PostLogoutRedirectUri = postLogoutRedirectUri,
    }
    

    我所做的是根据用户登录的 URL 使用 WSFederation 或 OpenId 协议。它保持与 OWIN 创建的 cookie 的会话,因此我到目前为止所做的测试看起来很有希望。 要获取此代码,只需使用 ADFS 身份验证创建一个项目,并使用 Azure AD 创建另一个项目,然后将缺少的 nuget 包添加到解决方案并将 StartupAuth.cs 中的代码从一个复制到另一个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-16
      相关资源
      最近更新 更多