oauth-2.0 - OAuth Server与Resource Server分离后如何处理用户注册?

标签 oauth-2.0 api-design

我正在开发一个应用程序,其中具有提升角色(管理员)的用户可以创建其他用户(具有较低角色)。我正在使用 PHP(Slim 框架)和 MySQL。

到目前为止,我有一个资源服务器,可以通过 REST API 访问它,并使用密码授予从 OAuth 服务器获得访问 token 。两台服务器有独立的数据库。还有一个 Web 服务器,它提供了一个仪表板,管理员可以在其中登录并通过设置用户名、密码和其他通用信息来创建新用户。

考虑到资源服务器和 OAuth 服务器都必须将用户数据存储在各自的数据库表中这一事实,如果资源服务器根据新用户请求将通用用户信息存储在其“用户”中是否可以? “表并将带有用户凭据的请求发送到 OAuth 服务器,OAuth 服务器将在其“oauth_users”表中添加一个新条目?如果没有,实现此功能的最佳和安全方法是什么?

提前致谢!

最佳答案

这种方法对我们有用。

Auth Server 数据库端,您只需存储:配置的用户 ID、重定向 URL 和授权服务级别(范围);授予的访问 token ;和其他授权所需的数据(在您的案例中的角色)。

登录服务器 数据库存储:用户 ID、密码和其他身份验证相关数据。

用户资源服务(通常是 RESTFul API)应该存储:用户 ID 和其他个人数据

根据新用户对安全资源数据的请求(此处需要一些范围),重定向到登录服务器,通过此成功的身份验证,重定向到 Auth 服务器以使用该范围授予权限,生成访问 token 并重定向使用访问 token 访问 protected 资源,资源服务器验证 token 和范围(一些实现还再次调用 Auth 服务器以使用 JWT 验证此)以最终允许初始用户请求。

一般来说,我个人使用 DRY 这种架构的原理。

干杯!

关于oauth-2.0 - OAuth Server与Resource Server分离后如何处理用户注册?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50132708/

相关文章:

java - 同一方法的两个版本仅在其签名(方法名称和 'throws' 属性)上有所不同是否被认为是糟糕的设计?

ruby-on-rails-4 - Doorkeeper::AuthorizationsController#new 中的 NoMethodError - Doorkeeper

php - Oauth - 默认登录 token 应赋予什么类型的权限?

java - 更新数据库中的用户权限 Spring boot OAuth 2.0

c# - 使 Controller 方法异步会提高其性能吗?有什么好处?

java - 我是否应该允许实现类有可能破坏 API,否则可能会导致不利影响

google-cloud-platform - 如何将 Google Cloud Platform 中的 'localhost' 添加为 OAuth2 的授权域

PHP Gmail API - 发送草稿

c - 如何使 C 中的方法链流畅?

pagination - 偏移分页与光标分页