是否有适合与OpenID Connect一起使用的标准HTTP身份验证方案?我想到的场景如下:
HTTP服务要求对用户进行身份验证。一种可能的身份验证方法是使用来自第三方OpenID提供程序的联合身份。该服务在第三方OpenID提供商处注册为机密客户端,并拥有client_id和客户机密。
当用户尝试访问HTTP服务时,服务器会使用401 Unauthorized
和WWW-Authenticate
标头进行响应,其中包含有关如何向OpenID提供程序发起身份验证请求的信息:
WWW-Authenticate: OpenIDConnect realm="MyService", client_id="1234-5678", authorization_url="https://provider/authorize"
客户端联系授权端点,进行身份验证,然后获取授权代码。然后,通过Authorization
标头在服务的后续请求中指定代码,例如:
GET / HTTP/1.1
Authorization: OpenIDConnect client_id="1234-5678", code="AAABAAA..."
服务将使用该代码从OpenID提供程序获取ID令牌,并与客户端建立经过身份验证的会话,例如,通过设置cookie或返回一组新凭据来用于后续请求。
OpenIDConnect
方案是我为这个例子做的事情。我试图寻找一种类似的标准方法,而且没有结果给我留下了以下可能的答案:
答案 0 :(得分:0)
我认为你首先不知道在哪里寻找。自RFC 7353起,HTTP中的身份验证方案受IANA HTTP Authentication Scheme Registry的约束。在所述注册表中,您将找到受RFC 5849, section 3.5.1约束的Basic
方案,并且看起来很像您正在寻找的方案。尽管如此,这是针对OAuth 1.0的。 OAUth 2.0采用Bearer
(RFC 6749)和{{1}}(RFC 6750)计划。
这完全是关注授权(通过OAuth)。不过,OpenID的领域是身份验证。您可能需要查看What's the difference between OpenID and OAuth?