用于指示OpenID连接服务器位置的标准HTTP头?

用于指示OpenID连接服务器位置的标准HTTP头?,http,oauth-2.0,openid-connect,Http,Oauth 2.0,Openid Connect,我们正在开发一个本机应用程序,它可以访问资源服务器(也在我们的控制之下)上的内容。资源服务器将要求本机应用程序的用户通过OpenID Connect进行身份验证,以获取作为承载令牌传递的访问密钥(RFC 6750)。授权服务器是一个运行keydepot的独立服务器 我希望避免将有关授权服务器地址的信息硬编码到客户端软件中。相反,我希望资源服务器提供到身份验证服务器的提供者发现端点的链接,这可能是HTTP 401质询的一部分。我可以发明一个X-MyApp-*头,但我想知道是否有一个既定的约定(HT

我们正在开发一个本机应用程序,它可以访问资源服务器(也在我们的控制之下)上的内容。资源服务器将要求本机应用程序的用户通过OpenID Connect进行身份验证,以获取作为承载令牌传递的访问密钥(RFC 6750)。授权服务器是一个运行keydepot的独立服务器


我希望避免将有关授权服务器地址的信息硬编码到客户端软件中。相反,我希望资源服务器提供到身份验证服务器的提供者发现端点的链接,这可能是HTTP 401质询的一部分。我可以发明一个X-MyApp-*头,但我想知道是否有一个既定的约定(HTTP头、401响应中的正文内容、资源服务器上的标准URL等)?

RFC6750定义了WWW认证响应头的用法

规范的定义如下:

如果受保护的资源请求不包括身份验证 凭据或不包含启用访问的访问令牌 对于受保护的资源,资源服务器必须包含HTTP “WWW验证”响应

您可以使用此标题回复授权服务器的地址。规范允许具有规范定义的属性以外的属性

本规范定义的所有挑战都必须使用身份验证方案 价值“持票人”。此方案后面必须有一个或多个 auth参数值。此应用程序使用或定义的身份验证参数属性 规格如下其他auth param属性可能是 也可以使用

现在,如果我们可以定义一个名为auth_server的自定义属性,那么我们可以将其添加到401响应的WWW-Authenticate头中,如下所示

WWW-Authenticate:Bearer-realm=“example”,auth_-server=“URL-TO-OIDC-server”


您的客户端必须解析头并提取auth_服务器值。

您的意思是作为key=value对之一吗?有没有标准的钥匙可以使用,或者我应该编一把吗?@Brucemery是的,你可以使用类似的方法。我用一个例子更新了我的答案。我实际上也看到过这个应用。