对于这个用例,这是 OpenID Connect 的正确使用吗?
Is this the proper use of OpenID Connect for this use case?
我试图了解如何在以下用例中使用 OpenId Connect。假设我们只有以下 3 个组件:
- Web 应用公开 API(服务提供商又名 SP)。
- 一个单独的身份验证服务器(Identify Provider aka IDP)用于
使用上述 SP 进行单点登录。
- 最终用户使用的本机客户端应用程序。此客户端应用程序使用
SP 的 API.
所有流量都将通过 HTTPS。以下是我设想的 OpenID Connect 进程的工作方式:
- 本机应用程序会向 SP 请求 "token"。
- SP 会看到用户未通过身份验证并要求
来自受信任的 IDP 的验证。
- 将用户的凭据提供给 IDP 后,IDP 将
return SP 的 ID 令牌和访问令牌。
- SP 将验证 ID 令牌并将访问令牌提供给
本机客户端应用程序用于对 API.
的所有后续请求
这是在这种情况下使用 OpenID Connect 的推荐方式吗?任何明显的安全问题?我唯一看到的是本机客户端应用程序可以使用访问令牌访问 IDP 的用户信息端点。
关于第 1 - 4 点:
从 IDP 而非 SP 请求的令牌。 (通常 IDP 托管在单独的子域上)。我喜欢STS术语(Security Token Service)而不是IDP,它很容易描述OIDC服务器的作用:发行令牌的软件。
我更愿意说:从本机应用程序到 SP 的每个受保护(非匿名)请求都必须由 STS/IDP 验证。将 IDP 视为受保护的 resources/API/SP 和 native-app/RP/client.
之间的防火墙
IDP 响应取决于所使用的流(代码、隐式、混合、资源所有者、客户端凭据)。这个要点可能有助于快速理解流程:OIDC and OAuth2 Flows
ID 令牌旨在供 client/RP/native 应用程序使用。
我认为所描述的用例很常见,可以由 OpenIDConnect+OAuth2 处理。关于访问用户信息端点,它完全取决于您的 IDP 配置和 RP/Client/NativeApp 配置。
示例:
我将 IdentityServer3 用作 IDP/STS(其官方认证的 OpenID Connect 提供商):在 IdentityServer3 中,我可以通过配置禁用任何端点并限制 RP 范围。
总结一下:我认为这个用例是推荐的,就像你总结的那样。唯一的问题是我在上面强调的一些误解。但最重要的是不要选择错误的流程或通过错误配置滥用标准。
希望有用。
我试图了解如何在以下用例中使用 OpenId Connect。假设我们只有以下 3 个组件:
- Web 应用公开 API(服务提供商又名 SP)。
- 一个单独的身份验证服务器(Identify Provider aka IDP)用于 使用上述 SP 进行单点登录。
- 最终用户使用的本机客户端应用程序。此客户端应用程序使用 SP 的 API.
所有流量都将通过 HTTPS。以下是我设想的 OpenID Connect 进程的工作方式:
- 本机应用程序会向 SP 请求 "token"。
- SP 会看到用户未通过身份验证并要求 来自受信任的 IDP 的验证。
- 将用户的凭据提供给 IDP 后,IDP 将 return SP 的 ID 令牌和访问令牌。
- SP 将验证 ID 令牌并将访问令牌提供给 本机客户端应用程序用于对 API. 的所有后续请求
这是在这种情况下使用 OpenID Connect 的推荐方式吗?任何明显的安全问题?我唯一看到的是本机客户端应用程序可以使用访问令牌访问 IDP 的用户信息端点。
关于第 1 - 4 点:
从 IDP 而非 SP 请求的令牌。 (通常 IDP 托管在单独的子域上)。我喜欢STS术语(Security Token Service)而不是IDP,它很容易描述OIDC服务器的作用:发行令牌的软件。
我更愿意说:从本机应用程序到 SP 的每个受保护(非匿名)请求都必须由 STS/IDP 验证。将 IDP 视为受保护的 resources/API/SP 和 native-app/RP/client.
之间的防火墙
IDP 响应取决于所使用的流(代码、隐式、混合、资源所有者、客户端凭据)。这个要点可能有助于快速理解流程:OIDC and OAuth2 Flows
ID 令牌旨在供 client/RP/native 应用程序使用。
我认为所描述的用例很常见,可以由 OpenIDConnect+OAuth2 处理。关于访问用户信息端点,它完全取决于您的 IDP 配置和 RP/Client/NativeApp 配置。
示例: 我将 IdentityServer3 用作 IDP/STS(其官方认证的 OpenID Connect 提供商):在 IdentityServer3 中,我可以通过配置禁用任何端点并限制 RP 范围。
总结一下:我认为这个用例是推荐的,就像你总结的那样。唯一的问题是我在上面强调的一些误解。但最重要的是不要选择错误的流程或通过错误配置滥用标准。
希望有用。