【问题标题】:Clarificaton required on CIBA SpecCIBA 规范要求澄清
【发布时间】:2019-07-22 07:01:52
【问题描述】:

我正在浏览 [1]CIBA (https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#OpenID.Core) 规范,但无法理解什么是 user_code 以及需要如何为 CIBA 部署它。

“用户代码是一种防止未经请求的身份验证请求出现在用户身份验证设备上的机制。”

这是规范开始的方式。有关更多信息,请参阅第 7.1.2 节。

如果有人能解释此功能以及从身份服务器的角度应该如何支持它,将会很有帮助!

【问题讨论】:

    标签: oauth-2.0 openid


    【解决方案1】:

    这可能有点晚了,但我希望它可以帮助未来的读者。 user_code 机制是为了防止不需要的 CIBA 请求出现在最终用户的授权设备 (AD) 上。在某些情况下,使用 CIBA 授权服务器 (OP) 的依赖方 (RP) 或客户端应用程序知道最终用户的标识符,从而导致最终用户当前不知道的后续请求。因此,作为一项预防措施,必须在 CIBA 请求开始之前提供 user_code,在 AD 中执行它的操作等。这是为了确保在最终用户的 AD 上弹出的 CIBA 请求确实是“想要的”,或者我应该说在最终用户有意识的知识下。

    user_code 的结构类似于密码。这是一个只有最终用户知道的秘密……但它不应该是密码。

    因此,对于实现方面,粗略的方法可能如下:

    1. 注册客户端应用以支持 user_code
    2. 确保相应的用户帐户具有 user_code
    3. 在发出 CIBA 请求之前,客户端应用程序需要要求最终用户输入 user_code
    4. 提供的 user_code 将随身份验证请求一起传递,即初始 CIBA 请求
    5. 授权服务器 (OP) 验证请求参数,确保 user_code 对所选用户有效
    6. 继续符合规范的其余流程...

    【讨论】: