我试图了解如何在以下用例中使用OpenId Connect。我们假设我们只有以下3个组成部分:
所有流量都将通过HTTPS传输。以下是我设想OpenID Connect流程的工作原理:
这是在这种情况下使用OpenID Connect的推荐方法吗?任何明显的安全问题?我看到的唯一一个是本机客户端应用程序可以使用Access令牌访问IDP上的用户信息端点。
答案 0 :(得分: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处理。关于访问用户信息端点,它完全取决于您的IDP配置和RP / Client / NativeApp配置。
例如: 我使用IdentityServer3作为IDP / STS(其官方认证的OpenID Connect Provider):在IdentityServer3中,我可以通过配置禁用任何端点并限制RP范围。
总结一下:我认为在您结束时建议使用用例。唯一的问题是我在上面强调的一些误解。但最重要的不是选择错误的流程或通过错误配置滥用标准。
希望它有用。