我有三个不同的拉拉网站,我想让用户登录在一个网站,然后他将自动登录到其他两个网站。例如:如果您在stackoverflow上登录,然后打开stackexchange,您将使用StackOverflow帐户登录。我尝试过许多包,但它们以无限的例外结束,或者根本无法工作。大多数基于SAML的软件包,我不知道为什么它不与我一起工作?我不知道我错过了什么?有任何配置这工作吗?,我正在使用拉拉5.6。所有的应用程序都在同一台服务器上。
我尝试过许多基于SAML、OpenID和共享会话的解决方案,但它们都没有与我一起工作。我不知道我是不是错过了什么。this is the last example,我试过了,但没有起作用
这是我的密码
站点A
$site_b = 'http://s_sesstion_2.test/';
Route::get('/', function (Request $request) use ($site_b) {
$session_id = Session::getId();
try {
$http = new Client();
$response = $http->post($site_b . 'api/sessions/server', [
'form_params' => [
'session_id' => $session_id,
],
'headers' => [
'Accept' => 'application/json',
]
]);
} catch (Exception $e) {
dd($e->getMessage());
}
return view('welcome');
});B站点(路由/api.php)
Route::post('/sessions/server', function (Request $request) {
Storage::disk('local')->put('file.txt', $request->get('session_id'));
});站点B( SITE /web.php)
Route::get('/', function () {
$session_id = Storage::disk('local')->get('file.txt');
Session::setId($session_id);
Session::start();
//return Session::getId();// will return the same session id
return \auth()->user();//this should return the auth user but it did not!!
});我想要的只是在站点A注册,然后打开站点B,我将在其中注册。我会接受任何解决方案达到这个目的
发布于 2018-08-05 03:20:06
我实现了一个不使用SAML的SSO解决方案。我会在这里分享我的解决方案,希望能有所帮助。
单点登录
一个应用程序作为auth.domain的主身份验证服务器运行。其他应用程序运行在不同的域app1.domain,app2.domain,.
每个用户都链接到SSO令牌。这些令牌的过期时间非常短。所有身份验证过程(登录、重置密码、注册、.)在应用程序中只发生。
当用户访问任何应用程序时,例如,app-1.domain
auth.domain/login。auth.domain“记住我的cookie”附加到响应中。app-1.domain/sso/{sso_token}。app-1.domain应用程序读取数据库。如果SSO令牌有效且未过期,则查找与该令牌关联的用户。app-1.domain使用Auth::login($user)方法对上一步中找到的用户进行身份验证。app-1.domain从数据库清除接收到的SSO令牌。在这一步之后,用户将被认证为app-1.domain。
会话共享
所有共享会话变量都应保存到数据库中。我实现了一个新的会话驱动程序:
发布于 2018-08-05 03:43:36
如果两个应用程序共享相同的数据库,则可以遵循以下方法:
在您的数据库中,创建一个默认会话id,该id最初将标记为false。
->现在只要用户登录到任何一个站点,就会生成一个新的哈希,并将其替换为默认值。
可选
->您还可以将哈希保存在浏览器本地存储中,以哈希作为键,以null作为值。
->现在当用户登录/切换到任何一个站点时,如果哈希匹配默认值,检查散列->,显示登录页面,否则显示配置文件页。
我的答案只有在您使用公共数据库登录时才有效,否则需要映射。
或者,您可以使用cookie来存储散列,并可以在跨域访问它们。可以在Cross-Domain Cookies找到@ludovic的例子
https://stackoverflow.com/questions/51532814
复制相似问题