使用Google Oauth 2.0进行登录和权限管理是个好主意吗?



>我目前正在做一个项目,在我之前,开发人员通过谷歌Oauth 2.0实现了对实习生工具的登录

他这样做,只需在向谷歌进行身份验证并检查它是否"ourCompany.com"后,只需抓取用户域。

如果是,他将呈现页面,如果不是,则将用户重定向到登录名。 (所以基本上他每次页面浏览都会做一个 oauth 请求。

我对 Oauth 2.0 很陌生,但据我了解,这不是,应该如何使用它?

他想使用Oauth,因为他的想法是通过谷歌群组/组织组织我们所有的员工,从而有一个中心的地方来授予和获取权限。(我现在必须实现。

他说我应该"在每个请求上也得到小组",仅此而已。 (顺便说一句,我尝试将其作为"快速获胜",但还无法从谷歌获得它们,不确定它是否有意(

我对这应该如何工作的理解如下:

  1. 用户被重定向到谷歌Oauth 2.0服务,其范围是获取他的组/组织。
  2. 我们得到一个访问令牌,然后我会用它来向用户组/组织的谷歌 API 询问。
  3. 根据这些信息,我将在我们的应用程序本身中设置用户权限。(例如,用户在谷歌组中"作者"中,那么我会在我们的应用程序中给他作者角色(
  4. 然后,用户通过"正常"PHP会话登录,该会话接管应用程序的其余部分,而不是总是询问Oauth服务。

这种方法是否有意义,或者我的同事对他的实施是正确的?我在他的解决方案中看到的唯一好处是,如果用户是否仍在组中,我们可以获得"实时"信息。

但是从我到目前为止读到的关于 Oauth 2.0 的内容来看,他的实现对我来说并不合适,另一方面,我对这个话题没有足够的安全感说它是错误的。

因此,非常欢迎任何解释/意见。

有关该项目的其他信息:

  • 我们使用 Laravel 5.4
  • 我想过使用"社交名流"插件(https://github.com/laravel/socialite(和权限(https://github.com/spatie/laravel-permission(

如果您的应用程序中的目标用户组与为您的域配置的Google组相同,那么我认为可以使用Google域组。如果没有,您可以使用新组(可能带有一些前缀,如 myApp-group1(,但如果多个应用程序执行此操作,则最终可能会得到许多组。

还有一个问题是谁可以修改谷歌域名组。是否是有权修改应用程序中权限的同一个人/角色?

如果出现以下情况,我会考虑为应用程序创建单独的访问管理:

  • 您公司以外的人有机会使用该应用程序。
  • 您需要修改现有的 Google 群组(如果有的话(,才能使其适合您的应用程序。

看起来您可以通过Google目录API读取用户的组,其中包含范围https://www.googleapis.com/auth/admin.directory.group.member.readonly的访问令牌。但我对此没有经验。

我认为使用LDAP(或MS Active Directory(作为公司内部应用程序的访问管理是很常见的,因此使用Google群组的想法并不奇怪。

您描述的身份验证序列看起来是正确的。

相关内容

最新更新