Oauth 2.0 使用OpenID Connect和OAuth管理应用程序访问

Oauth 2.0 使用OpenID Connect和OAuth管理应用程序访问,oauth-2.0,openid,identity,openid-connect,Oauth 2.0,Openid,Identity,Openid Connect,通过OpenID Connect和OAuth规范来看,OpenID Connect似乎都是关于身份的,OAuth是关于委托访问的(尽管它似乎特别是APIaccess) 如果OAuth用于API访问,那么管理客户端访问的推荐方法是什么?OpenID Connect可以说明您是谁,但说明您可以访问哪些客户端(应用程序) 这是应用程序本身的工作还是我们可以放在访问令牌上的东西?我不确定您到底想知道什么,所以我将尝试更广泛地回答这个问题 假设您有一个身份验证(OAuth2)提供者、多个使用它的应用程序(

通过OpenID Connect和OAuth规范来看,OpenID Connect似乎都是关于身份的,OAuth是关于委托访问的(尽管它似乎特别是APIaccess)

如果OAuth用于API访问,那么管理客户端访问的推荐方法是什么?OpenID Connect可以说明您是谁,但说明您可以访问哪些客户端(应用程序)


这是应用程序本身的工作还是我们可以放在访问令牌上的东西?

我不确定您到底想知道什么,所以我将尝试更广泛地回答这个问题

假设您有一个身份验证(OAuth2)提供者、多个使用它的应用程序(客户端)和多个用户

如果客户机获得ID令牌,则该令牌应仅用于请求它的客户机验证用户身份-ID令牌包含客户机的
客户ID
aud
(观众)字段

如果客户机获得了由资源所有者授权的访问令牌,则客户机可以使用该访问令牌访问接受授权提供程序颁发的令牌的任何资源(API服务)。但是API服务检查访问令牌是否包含服务所需的作用域。如果客户端请求资源所有者无法委托的范围(权限不足),则身份验证提供程序可以
无效\u范围
,或者从访问令牌中忽略该范围。客户机是否可以委托范围取决于身份验证提供程序实现(未涵盖它)

如果您想限制某些用户/客户端组合,因此用户无法授权客户端获取令牌,那么同样,这是身份验证提供程序的实现细节


如果您的问题更多地是关于在具有ID令牌(或访问令牌)的应用程序中允许经过身份验证的用户做什么,那么您可以决定如何做。应用程序通常需要限制对服务和数据的访问。服务通常是静态的,访问可以基于访问令牌作用域。但是应用程序数据是动态的,访问通常基于数据所有权或访问控制列表(类似于文件系统上的ACL)。

更明确地说,我指的是客户端访问。根本不涉及API。用户导航到客户端,客户端将其重定向到令牌服务,然后使用ID令牌发送回客户端。在允许用户进入客户端之前,我想阻止他们,因为他们无法访问应用程序。我想应用程序本身可以调用来检查这一点,也可以在ID或访问令牌中进行检查。这是我在第5段中介绍的内容-您可以在身份验证提供商级别执行此操作-如果您确定客户端无法获得经身份验证的用户ID令牌,您只需将用户重定向回具有身份验证的客户端即可。