这是否适用于此用例的OpenID Connect?

时间:2015-05-18 16:41:57

标签: authentication single-sign-on openid openid-connect

我试图了解如何在以下用例中使用OpenId Connect。我们假设我们只有以下3个组成部分:

  • 具有公开API的Web应用程序(Service Provider aka SP)。
  • 用于的单独身份验证服务器(Identify Provider aka IDP) SSO与上述SP。
  • 最终用户使用的本机客户端应用。此客户端应用程序使用 SP的API。

所有流量都将通过HTTPS传输。以下是我设想OpenID Connect流程的工作原理:

  1. 本机应用会请求"令牌"来自SP。
  2. SP会看到用户未经过身份验证并要求 来自受信任的IDP的验证。
  3. 在向IDP提供用户凭证后,IDP会 将ID令牌和访问令牌返回给SP。
  4. SP将验证ID令牌并将Access令牌提供给 本机客户端应用程序,用于API的所有后续请求。
  5. 这是在这种情况下使用OpenID Connect的推荐方法吗?任何明显的安全问题?我看到的唯一一个是本机客户端应用程序可以使用Access令牌访问IDP上的用户信息端点。

1 个答案:

答案 0 :(得分:1)

关于第1至4点:

  1. IDP请求的令牌不是SP。 (通常IDP托管在单独的子域上)。我喜欢STS术语(安全令牌服务)而不是IDP,它很容易描述OIDC服务器的角色:发行令牌的软件。

  2. 我更喜欢说:从本地应用到SP的每个请求,受保护(非匿名)都必须由STS / IDP验证。将IDP视为受保护资源/ API / SP和native-app / RP /客户端之间的防火墙。

  3. IDP响应取决于所使用的流(代码,隐式,混合,资源所有者,客户端凭据)。这个要点可能有助于快速了解流程:OIDC and OAuth2 Flows

  4. ID令牌,旨在供客户/ RP /本机应用使用。

  5. 我认为所描述的用例很常见,由OpenIDConnect + OAuth2处理。关于访问用户信息端点,它完全取决于您的IDP配置和RP / Client / NativeApp配置。

    例如: 我使用IdentityServer3作为IDP / STS(其官方认证的OpenID Connect Provider):在IdentityServer3中,我可以通过配置禁用任何端点并限制RP范围。

    总结一下:我认为在您结束时建议使用用例。唯一的问题是我在上面强调的一些误解。但最重要的不是选择错误的流程或通过错误配置滥用标准。

    希望它有用。