通过OpenID Connect和OAuth规范,似乎OpenID连接完全与身份相关,OAuth与委托访问有关(尽管它似乎特别是 API 访问) .
如果OAuth用于API访问,那么管理 client 访问的推荐方法是什么? OpenID Connect可以说出你是谁,但是你可以访问哪些客户端(应用程序) .
这是应用程序本身的工作还是我们可以放在访问令牌上的东西?
我不确定你想知道什么,所以我会尝试更广泛地回答它 .
假设您有一个身份验证(OAuth2)提供程序,使用它的多个应用程序(客户端)和多个用户 .
如果客户端获取ID令牌,则该令牌应该仅用于由请求它的客户端验证用户身份 - ID令牌包含客户端 client_id 的 aud (受众)字段 .
client_id
aud
如果客户端获得资源所有者授权的访问令牌,则客户端可以使用访问令牌来访问接受授权提供者发出的令牌的任何资源(API服务) . 但API服务会检查访问令牌是否包含服务所需的范围 . 如果客户端请求资源所有者无法委派的范围(权限不足),则身份验证提供程序可以_6708_ invalid_scope 或只是从访问令牌中省略范围 . 客户端是否可以委派范围的决定取决于auth提供程序实现(OAuth2 RFC不包括它) .
invalid_scope
如果要限制某些用户/客户端组合,那么用户无法授权客户端获取令牌,那么这又是您的身份验证提供程序的实现细节 .
如果您的问题更多地是关于允许经过身份验证的用户在具有其ID令牌(或访问令牌)的应用程序中执行的操作,则由您决定如何执行此操作 . 应用程序通常需要限制对服务和数据的访问 . 服务通常是静态的,访问可以基于访问令牌范围 . 但是应用程序数据是动态的,访问通常基于数据所有权或访问控制列表(ACL - 就像在文件系统上一样) .
1 回答
我不确定你想知道什么,所以我会尝试更广泛地回答它 .
假设您有一个身份验证(OAuth2)提供程序,使用它的多个应用程序(客户端)和多个用户 .
如果客户端获取ID令牌,则该令牌应该仅用于由请求它的客户端验证用户身份 - ID令牌包含客户端
client_id
的aud
(受众)字段 .如果客户端获得资源所有者授权的访问令牌,则客户端可以使用访问令牌来访问接受授权提供者发出的令牌的任何资源(API服务) . 但API服务会检查访问令牌是否包含服务所需的范围 . 如果客户端请求资源所有者无法委派的范围(权限不足),则身份验证提供程序可以_6708_
invalid_scope
或只是从访问令牌中省略范围 . 客户端是否可以委派范围的决定取决于auth提供程序实现(OAuth2 RFC不包括它) .如果要限制某些用户/客户端组合,那么用户无法授权客户端获取令牌,那么这又是您的身份验证提供程序的实现细节 .
如果您的问题更多地是关于允许经过身份验证的用户在具有其ID令牌(或访问令牌)的应用程序中执行的操作,则由您决定如何执行此操作 . 应用程序通常需要限制对服务和数据的访问 . 服务通常是静态的,访问可以基于访问令牌范围 . 但是应用程序数据是动态的,访问通常基于数据所有权或访问控制列表(ACL - 就像在文件系统上一样) .