0

我正在构建具有以下上下文的原型。

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

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

我之前的尝试使用了 Web API 和 ADFS 的“adfs/services/trust/13/usernamemixed”端点。这允许移动设备向 API 发送凭据,然后 API 使用 ADFS 的端点对用户进行身份验证。然后它向移动应用程序返回一个 JWT 令牌。

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

我有两个问题。

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

1 回答 1

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上述地址,它返回 SAML 1.1 响应。您需要解析并使用它。

于 2017-02-06T13:30:56.697 回答