0

我已经按照这篇文章使用 IdSrv2 作为 IP-STS 和会员商店,并且可以在我的第一个客户端应用程序上正常工作,返回 URL:abc.com/a.aspx 在一个依赖方和资源中。

对于我的场景,我只想创建一个我创建的身份提供者。这是因为我不想显示我在 HRD 页面中创建的所有身份提供商,只想显示我的 IDP 和来自社交网络(facebook、google+ 等)的其他身份服务。

但是当我登录到我的第二个客户端应用程序时,我遇到它总是返回 abc.com/a.aspx。有什么解决方案可以解决我的问题吗?

4

1 回答 1

2

我已经创建了我相信您正在努力实现的设置。所以我有 Portal1 和 Portal2。两个门户都设置为通过 idsrv2(thinktecture 身份服务器)对用户进行身份验证,并设置为使用 HRD。idsrv2 设置为通过 HRD 将用户身份验证委托给 idsrv(thinktecture 身份服务器)。

Portal1 web.config(仅重要部分)的配置是

<system.identityModel>
        <identityConfiguration>
          <audienceUris>
            <add value="https://localhost/Portal1/" />
          </audienceUris>
          <issuerNameRegistry type="System.IdentityModel.Tokens.ValidatingIssuerNameRegistry, System.IdentityModel.Tokens.ValidatingIssuerNameRegistry">
            <authority name="http://idsrv2">
              <keys>
                <add thumbprint="BCD339ECD62BC50DEDA3B54D2236D12AE1217687" />
              </keys>
              <validIssuers>
                <add name="http://idsrv2" />
              </validIssuers>
            </authority>
          </issuerNameRegistry>
          <!--certificationValidationMode set to "None" by the the Identity and Access Tool for Visual Studio. For development purposes.-->
          <certificateValidation certificateValidationMode="None" />
        </identityConfiguration>
    </system.identityModel>
    <system.identityModel.services>
        <federationConfiguration>
          <cookieHandler requireSsl="false" />
          <wsFederation passiveRedirectEnabled="true" issuer="https://localhost/idsrv2/issue/hrd" realm="https://localhost/Portal1/" requireHttps="false" />
        </federationConfiguration>
    </system.identityModel.services>

Portal2 的配置(也只是重要部分)是:

<system.identityModel>
    <identityConfiguration>
        <audienceUris>
            <add value="https://localhost/Portal2/" />
        </audienceUris>
        <issuerNameRegistry type="System.IdentityModel.Tokens.ValidatingIssuerNameRegistry, System.IdentityModel.Tokens.ValidatingIssuerNameRegistry">
            <authority name="http://idsrv2">
                <keys>
                    <add thumbprint="BCD339ECD62BC50DEDA3B54D2236D12AE1217687" />
                </keys>
                <validIssuers>
                    <add name="http://idsrv2" />
                </validIssuers>
            </authority>
        </issuerNameRegistry>
        <!--certificationValidationMode set to "None" by the the Identity and Access Tool for Visual Studio. For development purposes.-->
        <certificateValidation certificateValidationMode="None" />
    </identityConfiguration>
</system.identityModel>
<system.identityModel.services>
    <federationConfiguration>
        <cookieHandler requireSsl="false" />
        <wsFederation passiveRedirectEnabled="true" issuer="https://localhost/idsrv2/issue/hrd" realm="https://localhost/Portal2/" requireHttps="false" />
    </federationConfiguration>
</system.identityModel.services>

现在,idsrv 的配置(我认为很重要的部分):

一般配置

按键配置

WSFederation 协议配置

身份提供者

中继方

最后是 idsrv2 的配置:

一般配置

按键配置

WSFederation 协议配置

身份提供者

中继方

Portal1 配置的 RP

Portal2 配置的 RP

以及在 Portal1 上进行身份验证时的最后网络流

网络流量

于 2014-04-03T12:32:52.573 回答