2012-10-10 85 views
1

Following this post我創建了一個WCF客戶端,其中:調用由ACS保護WCF服務,它使用ADFS,由於IDP

  1. 使用ADF對AD用戶進行身份驗證。
  2. 向調用者提供SAML2票據。
  3. 使用提供的SAML2票證來呼叫WCF服務。

這很好,但我的問題的下一部分是擴展這個使用Azure ACS。

我將ACS添加到ACS,並在Visual Studio中使用Add STS Reference將STS引用更改爲指向ACS。

我已經擴展了Token.GetToken方法,提供令牌分爲以下方法:

public static SecurityToken GetToken(SecurityToken adfsToken, string appliesTo, string idpEndpointAddress, out RequestSecurityTokenResponse rsts) 
{ 
    WS2007HttpBinding binding = new WS2007HttpBinding(); 
    binding.Security.Message.EstablishSecurityContext = false; 
    binding.Security.Mode = SecurityMode.TransportWithMessageCredential; 

    WSTrustChannelFactory trustChannelFactory = new WSTrustChannelFactory(binding, new EndpointAddress(idpEndpointAddress)); 
    trustChannelFactory.TrustVersion = TrustVersion.WSTrust13; 
    trustChannelFactory.ConfigureChannelFactory(); 

    // Create issuance issuance and get security token 
    RequestSecurityToken requestToken = new RequestSecurityToken(WSTrust13Constants.RequestTypes.Issue); 
    requestToken.AppliesTo = new EndpointAddress(appliesTo); 
    WSTrustChannel tokenClient = (WSTrustChannel)trustChannelFactory.CreateChannelWithIssuedToken(adfsToken); 
    SecurityToken token = tokenClient.Issue(requestToken, out rsts); 
    return token; 
} 

以下端點:

https://test.accesscontrol.windows.net/v2/wstrust/13/issuedtoken-symmetric 

,但我得到以下異常:

安全通道無法打開,因爲與 rem的安全協商ote端點失敗。這可能是由於EndpointAddress中指定的EndpointIdentity缺失或不正確,用於創建通道 。請驗證 指定或暗示的EndpointIdentity EndpointAddress正確標識遠程端點。

隨着內部異常:

ACS10001:處理SOAP報頭髮生錯誤。

  1. 我需要什麼,在ACS配置得到這個與ADFS提供的令牌工作?
  2. 我是否需要使用ACS提供的令牌,或者我可以使用ADFS提供的服務嗎? (它似乎正在工作..)

回答

1

看看linked ACS樣本,這似乎是做你到底在問什麼。

+0

謝謝奧倫 - 我會看看這個例子。 – Darbio