首页 文章

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

提问于
浏览
3

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

  • 具有公开API的Web应用程序(Service Provider aka SP) .

  • 用于上述SP的SSO的单独身份验证服务器(Identify Provider aka IDP) .

  • 最终用户使用的本机客户端应用程序 . 此客户端应用程序使用SP的API .

所有流量都将通过HTTPS进行 . 以下是我设想OpenID Connect流程的工作方式:

  • 本机应用程序将从SP请求"token" .

  • SP将看到用户未经过身份验证,并要求来自可信IDP的验证 .

  • 在向IDP提供用户凭证后,IDP将向SP返回ID令牌和访问令牌 .

  • SP将验证ID令牌并将Access令牌提供给本机客户端应用程序,以用于API的所有后续请求 .

这是在这种情况下使用OpenID Connect的推荐方法吗?任何明显的安全问题?我看到的唯一一个是本机客户端应用程序可以使用Access令牌访问IDP上的用户信息 endpoints .

1 回答

  • 1

    关于第1 - 4点:

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

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

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

    • ID令牌已设计并且打算由客户端/ RP /本机应用程序使用 .

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

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

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

    希望它有用 .

相关问题