Authentication 什么&x2019;应用程序权限和oauth2授权之间的区别是什么?

Authentication 什么&x2019;应用程序权限和oauth2授权之间的区别是什么?,authentication,oauth,permissions,authorization,openid-connect,Authentication,Oauth,Permissions,Authorization,Openid Connect,目前,我们已经有了一个应用程序,它是一个前端和后端分离的应用程序,前端是一个web应用程序(SPA),后端是一个web API 对于应用程序,我们已经有了使用注册、用户登录、用户角色、角色权限、用户检查和权限检查 现在,我们正在集成一个外部身份服务(openid和Oatuh2),但我误解了外部身份服务的身份验证和授权 问题1:是的,我可以使用外部身份服务登录并获得访问令牌,但在那之后,我仍然需要在我的应用程序中维护用户,因为对于业务,我需要知道谁创建了订单,谁操作了订单等…因此,那么用户系统我在

目前,我们已经有了一个应用程序,它是一个前端和后端分离的应用程序,前端是一个web应用程序(SPA),后端是一个web API

对于应用程序,我们已经有了使用注册、用户登录、用户角色、角色权限、用户检查和权限检查

现在,我们正在集成一个外部身份服务(openid和Oatuh2),但我误解了外部身份服务的身份验证和授权

问题1:是的,我可以使用外部身份服务登录并获得访问令牌,但在那之后,我仍然需要在我的应用程序中维护用户,因为对于业务,我需要知道谁创建了订单,谁操作了订单等…因此,那么用户系统我在我的应用程序中做什么,我仍然需要做什么,这对我的行为正确吗


问题2:对于授权,我仍然需要在应用程序中为自己维护用户角色、角色权限和权限检查,如果是,身份验证服务(OAuth2)的用途是什么?在我的应用程序中,OAuth2授权和权限模块有什么区别呢?

首先,OAuth2.0没有定义如何处理权限。它定义了获取访问令牌的方法。访问令牌是API作为访问授权接受的秘密(例如:-将它们与基本身份验证头进行比较。现在您收到的是令牌)

如何进行令牌验证?你有两个主要的选择。您可以对令牌颁发者(标识服务)执行令牌内省()。响应将包含有效负载,其中可能包含经过身份验证的最终用户和令牌到期详细信息

或者,如果访问令牌采用JWT格式(),那么您的API可以查找JWT中发送的特定声明(您将进行JWT验证,其中包括JWT签名验证)。索赔应包括最终用户以及到期详细信息

无论哪种方式,都可以在提取所需信息后调用权限逻辑

关于身份验证,这是使用OpenID Connect和ID令牌构建的。身份验证将发生在客户端(如您的案例中的SPA)。这独立于API调用

关于权限、用户和角色映射。如果您使用的是内置用户数据存储,则需要在外部标识服务和内部存储之间进行用户映射。否则,就无法将通过令牌(如回答的第一部分所述)接收到的用户数据与内置令牌关联起来。这与OAuth 2.0和OpenID Connect无关


例如,如果在内部存储器中找不到该用户,则可以假定该用户属于受限用户角色。此外,您可以在第一次收到此类数据时(验证令牌时)将该用户添加到您的内部系统中。稍后,可以有一个为登船用户分配权限的过程。具体实施细节取决于您的场景。

非常感谢,我想我现在明白了。至少,比以前好多了。