使用从第三方启动登录的情况

问题描述 投票:0回答:1

Open Id Connect 1.0 Core规范的第4节规定:

在某些情况下,登录流程由OpenID提供商或另一方发起,而不是依赖方。在这种情况下,启动器在其登录启动端点重定向到RP,该端点请求RP向指定的OP发送验证请求。此登录启动端点可以是RP的深层链接,而不是默认登录页面。支持OpenID Connect动态客户端注册1.0 [OpenID.Registration]的RP使用initiate_login_uri注册参数注册此端点值。

发起登录请求的一方通过重定向到RP的登录启动端点,传递以下参数:

需要。 RP要向其发送认证请求的OP的颁发者标识符。它的值必须是使用https方案的URL。 login_hint可选。向授权服务器提供有关最终用户可能用于登录的登录标识符的提示。如果客户端收到此字符串值参数的值,则必须将其作为login_hint参数值包含在Authentication Request中。 target_link_uri可选。身份验证后请求RP重定向到的URL。 RP必须验证target_link_uri的值,以防止被用作外部站点的开放重定向器。参数可以使用HTTP GET方法作为查询参数传递,也可以作为在用户代理中自动提交的HTML表单值传递,因此通过HTTP POST方法传输。

如果由扩展定义,则可以发送其他参数。客户必须忽略任何未被理解的参数。

客户端应该采用框架破坏和其他技术来防止最终用户通过Clickjacking等攻击而不知情地通过第三方网站登录。更多详细信息,请参见[RFC6819]的第4.4.1.9节。

假设我在OP service.com上注册了一个RP客户端foo,我想知道它是如何适用于客户端foo指示指示OP service.com将请求转发给另一个OP(如google)的用例。 RP如何最终收到id_token。

openid-connect oidc
1个回答
1
投票

它不适合您的用例:

  • foo是RP,因此可以是发起者:第4节说登录流程由OpenID提供商或另一方发起
  • 但foo无法指示service.com转发到谷歌,因为service.com是OP,而不是RP,第4部分只讨论重定向到RP:启动登录请求的一方通过重定向到登录启动来实现RP的终点。

因此,第4节不适用于您的用例。

匹配您的用例的一种方法是让service.com同时作为OP和SP执行:service.com可以充当foo的OP和Google的SP。 FranceConnect实现了这种用例的一个例子。这是法国公共服务,在其客户面前(法国公共服务,例如医疗保险)和法国公共身份提供者(一些公共行政部门,如公共财政部门)。这样,最终用户连接到初始服务,服务将此用户重定向到FranceConnect作为OP,FranceConnect作为SP将此用户重定向到另一个OP,此最终OP将用户重定向回FranceConnect,获取用户的身份从最终的OP开始,然后将用户重定向到初始服务,该服务从FranceConnect获取用户的身份(FranceConnect知道身份,因为它之前从最终的OP获得了它)。

以下是此用例的UML序列图:

UML sequence diagram

© www.soinside.com 2019 - 2024. All rights reserved.