2014-05-19 29 views
8

對於我的公司,我必須做出POC檢查,如果我們可以用wsFederation驗證了我們的項目,其中有一個MVC應用程序,一些的WebAPI控制器,以及一些signalR集線器,全部在不同的項目中。 我們也想用OWIN認證中間件在客戶端應用程序和身份提供程序。認證與OWIN和WsFederation爲MVC,網絡API和signalR應用程式

我用Thinktecture的Identity Server V2作爲起始身份提供者(但我們必須要開發自己的OU在一些點)。 對於MVC應用程序,這是很簡單的,它工作正常,使用SAML2令牌。

但是現在事情變得更加複雜了,因爲我希望Web應用程序中已通過身份驗證的用戶能夠從Web API應用程序調用控制器方法(與MVC不同,請記住),使用ajax調用。

我已經閱讀了許多關於委託和actA令牌的事情,但我有點失落,不知道該如何開始這一部分。另外,我找不到任何有關使用OWIN身份驗證的授權。

所以我的第一個問題是:是否有可能實現這一目標? 然後:有人能指引我朝着正確的方向嗎?

回答

1

我在做它時遵循了Vittorio Bertocci的指示。

http://www.cloudidentity.com/blog/2013/01/09/using-the-jwt-handler-for-implementing-poor-man-s-delegation-actas/

幾個關於它的音符,在那裏說JWTSecurityTokenHandler,現在是JwtSecurityTokenHandler。這是一個小的錯字,但如果您不知道這是一個錯過15分鐘的好方法。

我也無法使用X509 FindByThumbprint部分。我認爲我沒有正確註冊本地證書。一旦我明天上班,我會發布我必須改變的事情,才能使其發揮作用。

Dominick Baier(http://leastprivilege.com/)也開設了一個名爲WebApi v2 Security的複合視圖課程,該課程非常擅長討論如何注入安全管道並設置web api項目來處理這個問題。

作爲另一種選擇,您可以將Vittorio使用的TokenValidationHandler類替換爲Microsoft.Owin.Security.Jwt包,並在Startup.cs文件中實現以下代碼。

app.UseJwtBearerAuthentication(
      new JwtBearerAuthenticationOptions 
      { 
       AuthenticationMode = AuthenticationMode.Active, 
       AllowedAudiences = new[] { ConfigurationSettings.AppSettings["ida:Realm"] }, 
       IssuerSecurityTokenProviders = new IIssuerSecurityTokenProvider[] 
        { 
         new SymmetricKeyIssuerSecurityTokenProvider(
          ConfigurationSettings.AppSettings["ida:ValidIssuer"], 
          ConfigurationSettings.AppSettings["ida:SymmetricKey"]) 
        }, 
       Provider = new OAuthBearerAuthenticationProvider 
       { 
        OnValidateIdentity = context => 
        { 
         var identity = context.Ticket.Identity; 
         return System.Threading.Tasks.Task.FromResult<object>(null); 
        } 
       } 
      });