4

ADFS に SAML トークンを照会する wcf サービスがあります。これは、Web から ADFS をクエリして SAML トークンを取得するための一般的なスニペットです。ただし、常にラインリターン channel.Issue(rst);で壊れてしまい ます。. エラーは ID3082 です: 要求スコープが無効であるか、サポートされていません。 少なくとも高レベルでは、エラーがADFSサーバー側にあるのか、WCFサービスの構成方法にあるのか、コードにあるのかを判断できません。助けてください。

public SecurityToken GetSamlToken()
{
    using (var factory = new WSTrustChannelFactory(
        new UserNameWSTrustBinding(SecurityMode.TransportWithMessageCredential),
        new EndpointAddress(new Uri("https://serv/adfs/services/trust/13/usernamemixed"))))
    {
        factory.Credentials.UserName.UserName = "username";
        factory.Credentials.UserName.Password = "password";
        factory.Credentials.ServiceCertificate.Authentication.CertificateValidationMode = X509CertificateValidationMode.None;
        factory.TrustVersion = TrustVersion.WSTrust13;                
        WSTrustChannel channel = null;                
        try
        {
            string KeyType;
            var rst = new RequestSecurityToken
            {
                RequestType = WSTrust13Constants.RequestTypes.Issue,
                AppliesTo = new EndpointAddress("net.tcp://localhost:xxxx/Service1/mex"),                         
                KeyType = Microsoft.IdentityModel.Protocols.WSTrust.WSTrust13Constants.KeyTypes.Bearer,                                        
            };

            channel = (WSTrustChannel)factory.CreateChannel();

            return channel.Issue(rst);
        }
        finally
        {
            if (channel != null)
            {
                channel.Abort();
            }
            factory.Abort();
        }
    }
}
4

2 に答える 2

4

問題は

AppliesTo = new EndpointAddress("net.tcp://localhost:xxxx/Service1/mex")

これを証明書利用者の uri に置き換えたところ、トークンが発行されました。ここで唯一の問題は、紛らわしいエラー メッセージです。

于 2013-10-21T05:23:58.880 に答える