Laravel-如果登录在另一个服务中得到验证,如何在一个服务进行令牌身份验证



我有两个API。其中包括关于用户的所有信息,例如注册和登录功能。另一个拥有有关组织的所有信息,包括搜索和添加这些组织的图像、视频和文档的请求。在两个独立的API中实现这一点的原因是,用户API具有更大的可扩展性,因为它更有可能拥有比API组织中更多的用户,但如果它们都显著增长,那么在同一个API中拥有所有这些信息可能是一个问题。

我正在使用Laravel来开发这些API的后端。

我需要使用在用户API中注册并使用令牌进行身份验证的帐户在组织API中进行搜索,只有经过身份验证的用户才能进行搜索,如何连接API?

如何获取在用户API中创建的用户令牌,并在组织API中使用它?

想法我想创建一个表,其中包含要保存在组织API中的令牌的id、令牌和过期日期。因此,当用户登录时,令牌被传递给组织API,然后组织将在需要时访问令牌。它会起作用吗?如何实现?

发出一组密钥,如api密钥和salt密钥,您的api密钥将充当用户标识密钥(类似于用户名(,您的模块通过用salt加密发送的数据来生成签名。

您的服务1

  • 按特定顺序对数据进行排序
  • 使用Salt密钥加密总数据以生成签名
  • 张贴原始和签名(无盐键(

示例代码:

$data['name']  = 'xxx';
$data['mail']  = 'yyy';
$data['age']   = 'zzz';
//sort the data in some order
ksort($data);
//create a piped delimited raw signature with the data
$raw_data = '';
foreach($data as $key => $value)
{
$raw_data = $raw_data .'|'. $value ;
}
$decrypted = $newEncrypter->decrypt( $data);
$newEncrypter = new IlluminateEncryptionEncrypter('salt-key');
$data['signature'] = $newEncrypter->encrypt( $data);

在您的服务2

  • 接收数据
  • 消除签名
  • 按相同顺序对数据进行排序
  • 使用salt密钥对其重新加密(您需要从db或.env获取此密钥(
  • 验证接收到的签名和生成的签名是否同步。示例代码:
//we will grab the signature as received_signature to compare later and would unset from the data.
$compare['received_signature']  = $request->input('signature');
$data   = $request->input();
unset($data['signature');
//sort the data in some order
ksort($data);
//create a piped delimited raw signature with the data
$raw_data = '';
foreach($data as $key => $value)
{
$raw_data = $raw_data .'|'. $value ;
}
$newEncrypter = new IlluminateEncryptionEncrypter('salt-key');
$compare['generated_signature'] = $newEncrypter->encrypt( $data);
if($compare['generated_signature'] != $compare['received_signature'])
{
//take some action like opening ticket or email notification
die();
}

结果如果签名是同步的,你可以去,如果不是,你可能需要忽略它。

相关内容

最新更新