OpenID Connect,如果尚未登录,无需登录表单即可重定向?

Ben*_*ini 6 authentication single-sign-on openid-connect

在 OpenID Connect 中,如果我的用户连接到身份提供者(假设他们已经授权我的客户端应用程序),我希望他们自动连接到我的客户端。

这是我想要的工作流程:

  • USER 到达 CLIENT 主页
  • USER 被重定向到 IdP(授权请求)
    • 如果他已登录 IdP,则会重定向到 CLIENT 并且 OIDC 工作流程开始,然后他已登录 CLIENT
    • 如果他没有登录 IdP 或者他没有授权 CLIENT 访问他的身份,则 IdP 的登录表单不会显示给 USER,并且他被重定向到 CLIENT 主页,未登录

这就像 CAS 中的“网关”模式。我使用授权代码流,我不想使用带有隐式流的 Javascript 通过 JS 动态登录。

你知道这是否可能?我在规范中找不到它。

谢谢 :)

Kav*_*uwa 4

您正在考虑 IDP 之上的 SSO 行为。这通常超出 OpenID Connect 规范,并且通常绑定到您正在使用的特定身份提供商(例如:Azure、PING 或 WSO2)。但是有一些参数可以调整此行为,例如提示登录提示,它们是可选的。

来自 OpenID Connect身份验证请求部分

迅速的

以空格分隔、区分大小写的 ASCII 字符串值列表,指定授权服务器是否提示最终用户重新进行身份验证并同意。

有效值为登录同意选择帐户。您可以使用它们强制强制登录或允许选择帐户。

登录提示

向授权服务器提示最终用户可能用于登录的登录标识符(如有必要)

一个很好的例子是通过将 login_hint 传递给身份提供商来启用 SSO 行为。如果身份提供商可以根据(例如)公司 LDAP 验证身份并检测登录状态,则您可以提供无凭据的登录体验。同时,您可以使用prompt=login强制登录,即使身份提供者持有登录会话也是如此。

  • 谢谢,我完全错过了这个“提示”参数,这正是我需要的。“none”值非常好:如果用户已登录 IdP,则自动登录该用户,并且对于注销的用户来说是透明的。 (2认同)