首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >应用程序类型(OpenID连接)是否与客户端类型(OAuth 2.0)相对应?

应用程序类型(OpenID连接)是否与客户端类型(OAuth 2.0)相对应?
EN

Stack Overflow用户
提问于 2014-05-09 06:16:23
回答 1查看 1.6K关注 0票数 5

"OpenID连接动态客户端注册1.02.客户元数据“有一个名为2.客户元数据的条目,其定义值为本机web

代码语言:javascript
复制
application_type
   OPTIONAL. Kind of the application. The default, if omitted, is web.
   The defined values are native or web. Web Clients using the OAuth
   Implicit Grant Type MUST only register URLs using the https scheme
   as redirect_uris; they MUST NOT use localhost as the hostname. Native
   Clients MUST only register redirect_uris using custom URI schemes or
   URLs using the http: scheme with localhost as the hostname.
   Authorization Servers MAY place additional constraints on Native
   Clients. Authorization Servers MAY reject Redirection URI values
   using the http scheme, other than the localhost case for Native
   Clients. The Authorization Server MUST verify that all the registered 
   redirect_uris conform to these constraints. This prevents sharing a
   Client ID across different types of Clients.  

这些定义的值是否对应于“confidential (OAuth 2.0),2.1。客户类型”中描述的公共2.1。客户类型

代码语言:javascript
复制
OAuth defines two client types, based on their ability to
authenticate securely with the authorization server (i.e., ability to
maintain the confidentiality of their client credentials):

confidential
   Clients capable of maintaining the confidentiality of their
   credentials (e.g., client implemented on a secure server with
   restricted access to the client credentials), or capable of secure
   client authentication using other means.

public
   Clients incapable of maintaining the confidentiality of their
   credentials (e.g., clients executing on the device used by the
   resource owner, such as an installed native application or a web
   browser-based application), and incapable of secure client
   authentication via any other means.

如果不是,为什么规范(OpenID连接动态客户端注册1.0)没有一个条目来指定客户端类型?是否有任何方法在客户端注册端点中指定客户端类型(公共或机密)?

EN

回答 1

Stack Overflow用户

发布于 2014-05-10 16:46:53

如果“本机客户端”在"OpenID连接动态客户端注册1.02.客户元数据“中的意思是"RFC 6749 (OAuth 2.0)2.1客户类型”中的“原生应用程序”(显然是这样的),那么原生客户端总是公共客户端。

如果"Web Clients“在"OpenID连接动态客户端注册1.02.客户元数据”中的意思是"RFC 6749 (OAuth 2.0)2.1客户类型“中的"web应用程序”,但不包括“基于用户代理的应用程序E 219”,则Web客户端始终是客户端。

利用上述解释,application_type=native和application_type=web分别对应于公开和保密。

但是,application_type的要求是:

代码语言:javascript
复制
Web Clients using the OAuth Implicit Grant Type MUST only
register URLs using the https scheme as redirect_uris; they
MUST NOT use localhost as the hostname. Native Clients MUST
only register redirect_uris using custom URI schemes or URLs
using the http: scheme with localhost as the hostname.

与客户是否“有能力维护其证书的保密性”无关(来自RFC 6749)。换句话说,重定向URI与如何验证客户端无关。因此,在我看来,Application和Client是不同的概念。

奇怪的是,所有OAuth 2.0客户端都必须符合“redirect_uris”的任何一种要求(一种是针对Web客户端,另一种是针对原生客户端),因此当省略application_type时,使用“web”作为默认值可能是不合适的。当省略application_type时,不应假设“本地”或“web”都是IMHO。但是,我可能漏掉了什么。是否有任何理由将“redirect_uris”要求强加于所有OpenID Connect客户端

总之,我的结论是,应用程序类型和客户端类型是不同的。我希望client_type (公共或机密)被添加到客户机元数据列表中,并且当application_type不包含在客户注册请求中时,既不使用‘原生’也不使用'web‘作为默认值。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23557801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档