2

STS からの要求を使用するロード バランサーの背後に、多くの WIF アプリケーション インスタンスがあります。aspnet_regiis.exe を使用して生成された RSA キー コンテナーを使用し、このリンクに従ってイベント ハンドラーを追加して、RSA 暗号化を使用して、既定の DPAPI 暗号化の代わりに共有秘密キーを取得しました。「署名が無効です。データが改ざんされている可能性があります」というエラーが表示されます。

どんな指針も役に立ちます。

編集:IDモデルセクションの追加

   <microsoft.identityModel>
        <service>
            <audienceUris>
                <add value="https://mysite.com" />
            </audienceUris>
            <federatedAuthentication>
                <wsFederation passiveRedirectEnabled="false" https://mysts.com/sts" realm="https://mysite.com requireHttps="false" />
                <cookieHandler requireSsl="false" />
            </federatedAuthentication>
            <applicationService>
                <claimTypeRequired>
                    <claimType type="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name" optional="false" />
                    <claimType type="http://schemas.microsoft.com/ws/2008/06/identity/claims/role" optional="false" />
                </claimTypeRequired>
            </applicationService>
            <issuerNameRegistry type="Microsoft.IdentityModel.Tokens.ConfigurationBasedIssuerNameRegistry, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
                <trustedIssuers>
                    <add thumbprint="40A1D2622BFBDAC80A38858AD8001E094547369B" name="CN=IdentityTKStsCert" />
                </trustedIssuers>
            </issuerNameRegistry> 
        </service>
    </microsoft.identityModel>

void OnServiceConfigurationCreated(object sender, ServiceConfigurationCreatedEventArgs e)
{
    CspParameters cp = new CspParameters();
    cp.KeyContainerName = "MyRsaKey";
    RSACryptoServiceProvider rcsp = new RSACryptoServiceProvider(cp);
    List<CookieTransform> sessionTransforms =
        new List<CookieTransform>(new CookieTransform[] {
        new DeflateCookieTransform(),
        new RsaEncryptionCookieTransform(rcsp),
        new RsaSignatureCookieTransform(rcsp) });
    SessionSecurityTokenHandler sessionHandler = new SessionSecurityTokenHandler(sessionTransforms.AsReadOnly());
    e.ServiceConfiguration.SecurityTokenHandlers.AddOrReplace(sessionHandler);
}
4

0 に答える 0