我有一个现有的.net网络表单站点使用ADFS身份验证( System.IdentityModel.dll ),具有不同的自定义域,每个客户一个。在 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一起完成的事情
答案 0 :(得分:3)
答案 1 :(得分:0)
如果可能的话,我希望同时进行ADFS和Azure AD身份验证。
现在设计Azure AD的方式,只有在应用程序也作为基于Azure云的服务运行时,上述组合才有效。这就是链接所说的内容。
"将Active Directory和任何其他本地目录扩展到Azure AD,以便为所有基于云的应用程序启用单点登录。"
https://azure.microsoft.com/en-us/services/active-directory/
我假设您的应用程序在前提下运行,这意味着您可能无法混淆它们。
答案 2 :(得分:0)
我没有真正回答我的问题,因为我将创建一个新项目并复制网页内容。 我正在测试一个潜在的解决方案,看起来不太好但是有效。这可能是另一种更好的方式,所以我愿意投入。
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 中的代码从一个复制到另一个。