2012-08-08 120 views
2

我試圖做這樣的事情:中的ASP.NET Web API服務使用WIF

  1. 我有一個MVC4 Web App和Web的API服務(託管在蔚藍的兩個獨立的角色)
  2. 另一個角色運行CustomSTS1。
  3. MVC Web應用程序信任CustomSTS1
  4. 現在客戶登錄到站點後,他被重定向到STS登錄頁面。
  5. 登錄後,他被重定向回MVC網站。
  6. 在這個網站上,客戶執行操作,然後調用web-API服務。

我在Web應用程序中有SAML令牌,我將其傳遞給WebAPI服務。

現在,當我嘗試在Web API側驗證SAML令牌,我得到一個

Message=ID1032: At least one 'audienceUri' must be specified in the SamlSecurityTokenRequirement when the AudienceUriMode is set to 'Always' or 'BearerKeyOnly'. Either add the valid URI values to the AudienceUris property of SamlSecurityTokenRequirement, or turn off checking by specifying an AudienceUriMode of 'Never' on the SamlSecurityTokenRequirement. 

這是沒有網絡API服務信任CustomSTS1

一旦我設定的信任, 每當我嘗試向WEB API服務發出HTTP Get請求時,我總是會獲得HTTP 401:UNAUTHORIZED。現在

,我的問題是,(我知道我目前的做法肯定是不對的)

  1. 如何設置與CustomSTS1的信任關係,從而使的WebAPI服務能夠做一個ACTAS上代表登錄到MVC網站的用戶?

OR

  1. 這是結構錯了嗎?
  2. 是否有另一種方法來實現這一目標?
+0

你可以分享webapi服務配置和web應用程序配置 – 2013-02-19 04:11:43

回答

1

該方法在概念上是錯誤的。 MVC應用程序應該使用ActAs在STS中爲Web API協商新的令牌。這就是傳統上用於SOAP服務的原因。但是,Web API正在脫離SAML,因爲它是一種依賴於不同WS- *規範的複雜格式。如果您想要支持該級別的SSO,OAuth 2.0正在成爲該領域的標準。

另一種方法是建立在MVC應用程序和Web API之間的絕對信任,因此所有從MVC的Web App API的調用都是通過一個更標準的HTTP認證機制,像基本驗證使用特定的一組完成只有MVC應用程序知道的憑據。有關MVC應用程序中記錄的用戶的信息作爲附加信息傳遞。

Regards, Pablo。