两个不同 Laravel 应用程序之间的交叉身份验证

问题描述 投票:0回答:2

背景

这两个应用程序是用 PHP Laravel Web 应用程序开发的。在应用程序中,应用程序1和应用程序2是两个不同的应用程序,由两个不同的团队管理。应用程序 1 用于修剪视频,而应用程序 2 用于展示他们的视频。

目前两个应用的登录方式都是邮箱密码登录。

算法:

  1. 在应用程序1(例如Facebook)中,用户可以登录系统并上传视频以及一些表格详细信息。
  2. App 1 然后修剪和处理视频并保存在文件系统中。
  3. 处理完成后,应用程序 1 然后
    POST
    将结果发送到应用程序 2(例如 Instagram)。
  4. 在应用程序 2 中,视频会与相应的用户信息一起上传并向公众展示。

问题

  • APP 1如何验证APP 2中的用户
  • 在提供安全身份验证的同时,最好的方法和最用户友好的方法是什么

我关心的是App 2的身份验证部分。由于用户登录方式不同,我们如何在将视频发送到App 2之前对App 1中的用户进行身份验证?

我在 Google 上找到的一些作品

第一种方式:哈希(主密钥+ [INFO])

  1. 创建一个仅 App 1 和 App 2 知道的主密钥。然后使用一些额外信息(例如 time())对主密钥进行哈希处理。然后应用程序 2 可以使用自己的主密钥验证哈希信息,如果结果相似,则用户可以通过身份验证过程并立即将视频发布到应用程序 2 上。

第二种方式:OAUTH 代币

  1. 用户必须登录应用程序2并生成OAUTH令牌。然后,用户需要在应用程序 1 上提交 OAUTH 令牌以允许视频发布。这种方法并不是真正的用户友好,因为这种方法在某种程度上是开发人员的方法。

不太确定用于此类身份验证的术语。请随时在评论部分告诉我。非常感谢。

php laravel authentication laravel-5 basic-authentication
2个回答
0
投票

通常,如果您有多个共享用户凭据的应用程序,则有一个处理用户会话的 oauth 服务。

例如,谷歌有accounts.google.com作为登录页面。 因此,如果您想登录 gmail / youtube,您将被重定向到accounts.google.com 进行会话检查。如果您已经登录,那么它会自动将您重定向到您将使用的服务。

在您的情况下,您可以将您的应用程序之一作为登录服务,如果其他应用程序想要登录,它可以检查登录服务中的会话,然后重定向到其他应用程序。

CMIIW


0
投票

可以使用多种方法实现不同应用程序之间的身份验证。

选项 1:OAuth 2.0

OAuth 2.0 是一种广泛使用的身份验证和授权协议。它涉及访问令牌的概念,可用于代表用户授予对资源的访问权限。

实施:

用户登录(应用程序1):当用户登录应用程序1时,生成OAuth令牌。 令牌交换(应用程序 1 到应用程序 2):将此令牌连同视频和用户详细信息安全地发送到应用程序 2。 令牌验证(应用程序 2):应用程序 2 根据其 OAuth 服务器验证令牌。

选项 2:JWT(JSON Web 令牌)

JWT 是表示两方之间声明的紧凑、URL 安全的方式。可以对它们进行签名和加密以提高安全性。

实施:

用户登录(应用1):当用户登录时,生成包含用户信息的JWT。 发送 JWT(应用程序 1 到应用程序 2):将 JWT 与视频一起安全发送到应用程序 2。 令牌验证(应用程序 2):应用程序 2 验证 JWT 的签名并提取用户信息。

选项 3:使用 HMAC 的 API 密钥

此方法结合使用 API 密钥和 HMAC(基于哈希的消息身份验证代码)来实现安全通信。

实施:

生成 API 密钥(应用程序 2):应用程序 2 生成 API 密钥并与应用程序 1 安全地共享。 请求签名(应用程序 1):使用 HMAC 和共享密钥对请求(包括视频和用户详细信息)进行签名。 验证签名(应用程序 2):应用程序 2 使用其共享密钥验证签名。

推荐:

选择最适合您的安全要求和基础设施的方法。 OAuth 2.0 是标准化身份验证的不错选择,而 JWT 提供了轻量级替代方案。如果安全实施,带有 HMAC 的 API 密钥会更简单但更有效。

© www.soinside.com 2019 - 2024. All rights reserved.