ADFS + IdentityServer3 + Mobile + MVC

时间:2017-02-03 15:42:59

标签: adfs identityserver3 thinktecture

我正在使用以下背景构建原型。

  • 两个客户端应用程序(MVC和移动)
  • IdentityServer3作为依赖方
  • ADFS 3.0作为身份提供者
  • IdentityServer3.WsFederation插件,提供SAML支持

MVC方面已经完成,但我不确定如何接近移动端。

我以前的尝试使用了Web API和ADFS' " ADFS /服务/信任/ 13 / usernamemixed"端点。这允许移动设备向API发送凭证,然后API使用ADFS的端点对用户进行认证。然后它将JWT令牌返回给移动应用程序。

我们必须从Idp接收SAML令牌(可能是ADFS或不同的Idp),但我们的应用程序与令牌类型无关。

我有两个问题。

  1. IdentityServer3不支持使用上述端点的ws信任(据我所知),那么这种方案对于移动设备登录的正确方法是什么?
  2. 是否需要WsFederation插件,因为IdentityServer3可能会处理将SAML令牌转换为客户端应用程序的JWT。

1 个答案:

答案 0 :(得分:0)

首先,我不推荐SAML for Mobile设备(特别是原生应用),因为SAML将客户端视为浏览器。在移动应用程序中,它会打开一个浏览器进行身份验证,这不是我感觉最好的方法。我建议将OpenID / Oauth用于移动设备。

Idp可以支持多种登录协议,例如WS -Fed,SAML 2.0或OAuth。这取决于客户使用相关协议。

来到WS - Fed with 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地址,它返回SAML 1.1响应。你需要解析并使用它。