2016-05-17 35 views
3

現時点では、私のアプリケーションがログインするためにADFSで検証する必要があるプロジェクトで作業しています。ID3242:セキュリティトークンを認証または承認できませんでした

私はいくつかのコードは、ADFSからトークンを取得することが分かったが、それは誤りについての適切な説明なしに上記の私にエラーを与え続けています。

これは私が使用するコードです:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.ServiceModel; 
using System.ServiceModel.Security; 
using System.Net; 
using System.IdentityModel.Protocols.WSTrust; 
using System.IdentityModel.Tokens; 

namespace ADFS_token_test_3 
{ 
    class Program 
    { 
    static void Main(string[] args) 
    { 
     go(); 
    } 

    static public EndpointAddress ep; 
    static public WSTrustChannelFactory factory; 

    public static string go() 
    { 
     WS2007HttpBinding binding = new WS2007HttpBinding(SecurityMode.TransportWithMessageCredential); 
     binding.Security.Message.EstablishSecurityContext = false; 
     binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None; 

     binding.Security.Message.ClientCredentialType = MessageCredentialType.UserName; 
     ep = new EndpointAddress("https://companyname.nl/adfs/services/trust/13/usernamemixed"); 

     factory = new WSTrustChannelFactory(binding, ep); 
     factory.TrustVersion = TrustVersion.WSTrust13; 

     factory.Credentials.Windows.ClientCredential = CredentialCache.DefaultNetworkCredentials; 
     factory.Credentials.UserName.UserName = "username"; 
     factory.Credentials.UserName.Password = "password"; 

     var rst = new RequestSecurityToken 
     { 
      RequestType = RequestTypes.Issue, 
      AppliesTo = new EndpointReference("https://companyname.nl/adfs/services/trust/13/usernamemixedr"), 
      KeyType = KeyTypes.Bearer, 
     }; 

     IWSTrustChannelContract channel = factory.CreateChannel(); 
     // Error line 
     GenericXmlSecurityToken genericToken = channel.Issue(rst) 
     as GenericXmlSecurityToken; 

     return genericToken.TokenXml.InnerXml.ToString(); 
    } 
    } 
} 

エラーはエラーコメントと行で発生します。

誰もが手掛かりを持っていますか?あなたのCRL配布ポイントに到達することができ

答えて

0

を確認します。

一部のADFSシングルサインオンWebアプリケーションでこの問題が発生しました。 ADFSはPKI証明書を使用します(たとえば、トークンに署名するため)。これらの証明書には、到達可能でなければならないCRL(証明書失効リスト)があることがよくあります。失効リストを確認できない場合は、上記のエラーメッセージが出る傾向があります。 私のアプリケーションとCDP(CRL配布ポイント)サーバーの間にファイアウォールが存在していました。

PS。証明書自体の詳細を見るときにCDPを確認することができます。

関連する問題