2017-02-03 33 views
0

我正在用以下上下文構建原型。ADFS + IdentityServer3 + Mobile + MVC

  • 兩個客戶端應用程序(MVC &移動)
  • IdentityServer3依賴方
  • ADFS 3.0的身份提供
  • IdentityServer3.WsFederation插件提供SAML支持

的MVC方是完整的,但我不知道如何接近移動端。

我以前的嘗試使用Web API和ADFS'「adfs/services/trust/13/usernamemixed」端點。這允許移動設備向API發送證書,然後使用ADFS的端點對用戶進行身份驗證。然後它將JWT令牌返回給移動應用程序。

我們必須從Idp(可能是ADFS或不同的Idp)接收SAML令牌,但我們的應用程序對令牌類型不可知。

我有兩個問題。

  1. IdentityServer3不支持使用上述端點的ws信任(據我所知),那麼這種情況下移動設備登錄的正確方法是什麼?
  2. 是否需要WsFederation插件,因爲IdentityServer3可能會處理將SAML令牌轉換爲適用於客戶端應用程序的JWT。
+0

如果您需要SAML令牌,您如何不可知論者? –

+0

我們可以使用JWT或SAML令牌。 – user1424660

回答

0

首先,我不會推薦SAML作爲移動設備(特別是本機應用程序),因爲SAML將客戶端視爲瀏覽器。在移動應用程序中,它會打開瀏覽器進行身份驗證,這不是我感覺最好的方法。我建議在移動設備上使用OpenID/Oauth。

Idp可以支持多種登錄協議,如WS -Fed,SAML 2.0或OAuth。這取決於客戶使用相關協議。

即將到來的WS - 美聯儲與IdentityServer3,有一個OWIN中間件,它有助於實現它。

using Microsoft.Owin.Security.WsFederation; 

     app.UseWsFederationAuthentication(
        new WsFederationAuthenticationOptions 
         { 
          Wtrealm = "https://localhost:44309/core", //identityserver3 
          Wreply = "replyaddress", 
          MetadataAddress = "https://localhost/federationmetadata.xml", 
          AuthenticationType = "adfs", 
          Caption = "ADFS", 
          SignInAsAuthenticationType = "sometype" 
         }); 

上面的代碼把你帶到ADFS登錄界面,成功的身份驗證後,你會重定向到上述Wreply地址,它retuns SAML 1.1的響應。你需要解析它並使用它。