【发布时间】:2014-04-20 03:16:58
【问题描述】:
我的场景:
我有一个 .net Web 应用程序,人们使用表单身份验证登录应用程序,我的表单身份验证代码将某些用户发送到 ADFS 进行验证。我有多个联盟,包括我自己的用于内部用户的 Active Directory 服务器。因此,对于需要发送到 ADFS 进行身份验证的用户,我会这样做:
WSFederationAuthenticationModule instance = FederatedAuthentication.WSFederationAuthenticationModule;
SignInRequestMessage request = instance.CreateSignInRequest(Guid.NewGuid().ToString(), instance.Realm, true);
request.AuthenticationType = "urn:federation:authentication:windows";
//maybe you just don't need to specify the homerealm for ad, because there can only be one AD (integrated) trust?
//request.HomeRealm = "I-no-idea-what-to-put-here-for-AD";
Response.Redirect(request.WriteQueryString());
执行此操作时,您设置了 .HomeRealm 属性,该属性会在查询字符串中为您填充 whr 属性。这应该使 AD FS 跳过 HRD(家庭领域发现)页面。对于我的大多数联合(远程 STS)来说,我需要在属性中输入什么值非常清楚,您可以从 HRD 页面本身的下拉框中拉取值,或者您可以进入 AD FS 管理工具并拉取来自信任属性的价值。但是,对于 AD 信任,下拉列表中没有值(空字符串),并且您无法转到管理控制台中的属性。所以问题真的是这样的:如果我想通过 whr 参数预选 AD 信任,我应该将 HomeRealm 属性设置为什么?
附:您会在那里看到评论:“也许您只是不需要为广告指定 homerealm,因为只能有一个 AD(集成)信任?”我认为可能是这种情况,但我还没有证明。如果我的猜测是正确的,我稍后会回答这个问题。
【问题讨论】:
标签: asp.net active-directory adfs2.0