【问题标题】:ADFS Skip Home Realm Discovery using integrated authADFS 使用集成身份验证跳过家庭领域发现
【发布时间】: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


    【解决方案1】:

    来自原问题中的代码:

        request.AuthenticationType = "urn:federation:authentication:windows";
    

    该特定行似乎没有任何效果。此外,不需要指定 HomeRealm 的希望也落空了。事实证明,事实上,您必须指定 HomeRealm。在google了一段时间后,我发现许多声明暗示Active Directory信任与信任ADFS服务器本身相同。因此,作为一个在黑暗中疯狂的尝试,我尝试输入 ADFS 服务器的 URI,令我高兴和惊讶的是,它成功了。

    因此,更清楚地说,如果您访问依赖方的 web.config,您应该进行类似这样的设置:

    <issuerNameRegistry type="System.IdentityModel.Tokens.ValidatingIssuerNameRegistry, System.IdentityModel.Tokens.ValidatingIssuerNameRegistry">
      <authority name="http://testadfs.test.com/adfs/services/trust">
        <keys>
          <add thumbprint="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" />
        </keys>
        <validIssuers>
          <add name="http://testadfs.test.com/adfs/services/trust" />
        </validIssuers>
      </authority>
    </issuerNameRegistry>
    

    我最终将 request.HomeRealm 的值设置为您在 validIssuers 和 authority 元素中看到的值。这给了我让 ADFS 自动选择 Active Directory 声明提供程序信任的预期效果。

    我应该清楚我的 ADFS 服务器不是域控制器,但这仍然有效。

    【讨论】:

    • 太棒了!这对我帮助很大!
    猜你喜欢
    • 1970-01-01
    • 2012-11-27
    • 2015-05-31
    • 1970-01-01
    • 2015-02-10
    • 2016-11-16
    • 2016-12-07
    • 1970-01-01
    • 2021-02-10
    相关资源
    最近更新 更多