Adfs2.0 adfs windows身份验证

Adfs2.0 adfs windows身份验证,adfs2.0,Adfs2.0,我试着搜索这个,但什么也找不到 我希望用户拥有真正的SSO体验。这意味着他们登录到自己的计算机,当他们点击我们在ADFS中建立信任的web应用程序时,他们会直接被带到该网站。现在不管他们被带到ADFS表单登录页面。我们只希望在用户尚未连接到网络时显示表单登录页面。否则,ADF应该识别用户是否在网络上,并使用windows身份验证 要实现这一点,我必须在ADFS中进行哪些更改?在ADFS web.config中,您对以下内容的顺序是什么: <localAuthenticationTypes&

我试着搜索这个,但什么也找不到

我希望用户拥有真正的SSO体验。这意味着他们登录到自己的计算机,当他们点击我们在ADFS中建立信任的web应用程序时,他们会直接被带到该网站。现在不管他们被带到ADFS表单登录页面。我们只希望在用户尚未连接到网络时显示表单登录页面。否则,ADF应该识别用户是否在网络上,并使用windows身份验证


要实现这一点,我必须在ADFS中进行哪些更改?

在ADFS web.config中,您对以下内容的顺序是什么:

<localAuthenticationTypes>
    <add name="Integrated" page="auth/integrated/" />      
      <add name="Forms" page="FormsSignIn.aspx" />
      <add name="TlsClient" page="auth/sslclient/" />
      <add name="Basic" page="auth/basic/" />
</localAuthenticationTypes>

表格在上面吗

这些用户是在internet上还是在intranet上


是否使用ADFS代理?

一个选项是通过将代码放在global.asax中此段落的正下方,为RedirectingToIdentityProvider事件添加处理程序。这使您有机会在浏览器重定向到ADFS之前跳入,并修改请求(查询字符串)的外观。您可以这样做来指定身份验证类型,或者家庭领域(如果您有多个联合体,并且希望跳过HRD),或者可能还有很多其他我不知道的东西

void Application_Init()
    {
        FederatedAuthentication.WSFederationAuthenticationModule.RedirectingToIdentityProvider += new EventHandler<RedirectingToIdentityProviderEventArgs>(WSFederationAuthentication_RedirectingToIdentityProvider);
    }
当您将request.AuthenticationType设置为该值时,您告诉ADFS您要执行windows(集成)身份验证。这就是我让它工作所需要的一切。我不必像nzpcmad建议的那样在web.config中切换身份验证类型的顺序


此外,为了实现这一点,IIS和您的web浏览器在AD FS和您的依赖方之外发挥了一些神奇的作用,因此在IE中,您的用户必须转到工具>Internet选项>安全,并将站点添加到您的本地Intranet站点。也许有一种方法可以通过集团政策或其他方式来推动这一点,但这是另一个问题。无论如何,现在我想起来了,这可能是你唯一遗漏的一步。

我想补充一点,名字解析可能也会在这里发挥作用。如果用户在corpnet上尝试访问adfs服务器时无法使用内部IP地址找到adfs服务器,则可能是在外部解析adfs IP地址并点击adfs代理(假设已实现代理)。在wauth参数中指定urn:oasis:names:tc:SAML:1.0:am:password的身份验证方法(如中所述)也可以实现同样的效果。编辑Web.config也可以实现同样的效果:
void WSFederationAuthentication_RedirectingToIdentityProvider(object sender, RedirectingToIdentityProviderEventArgs e)
{
WSFederationAuthenticationModule instance = FederatedAuthentication.WSFederationAuthenticationModule;
SignInRequestMessage request = instance.CreateSignInRequest(Guid.NewGuid().ToString(), instance.Realm, true);
request.AuthenticationType = "urn:federation:authentication:windows";
Response.Redirect(request.WriteQueryString());
}