Я столкнулся с проблемой. Я обновляю сайт laravel с 4.2 до 6.12, который в основном является ручным проектом, и я наткнулся на проблему с laravel, AWS и SimpleSaml php. Если балансировщик нагрузки подключен до AWS, это делает довольно трудным иметь два веб-сайта на одном сервере в AWS.
В SimpleSaml php вам нужно, чтобы часть пакета была открыта для inte rnet. Однако в Laravel довольно сложно запускать нативные PHP файлы / скрипты без их фильтрации через среду. Поскольку я установил SimpleSaml php, используя composer, все размещено в каталоге Vender. Существует очень мало документации, поддерживающей установку composer, и я не уверен, как выставить simplesamlphp/simplesamlphp/www/*
для inte rnet. Кстати, я пытаюсь быть поставщиком услуг.
Я не могу настроить AWS для поддержки второй веб-страницы, Laravel фильтрует мои маршруты, и SimpleSaml php имеет очень мало документации о стандартах PSR и о том, как она должна быть настроена.
Мне не удалось попасть на страницу приветствия simplesaml php. Возможно, мне не хватает сценария publi sh?
Я попытался поместить simplesamlphp/www/*
в каталог public/
и использовать следующее, обнаруженное в сообщении о переполнении стека 2013 года. ,
Route::get("/", function() {
ob_start();
require("www/module.php");
return ob_get_clean();
});
Route::get("/", function() {
ob_start();
require("www/index.php");
return ob_get_clean();
});
Но это не работает. Поскольку это обновление, технически я должен быть в состоянии получить метаданные, конфигурацию и некоторые новые сертификаты, чтобы это работало. Но меня задерживают разоблачения этих веб-страниц. Прямо сейчас я брошен в oop аутентификации, потому что я не могу получить вызов ACS. По крайней мере, это мое лучшее предположение.
Это мои метаданные, я не исключаю, что я ошибся. saml20-idp-remote. php
<?php
$metadata['CLIENTCONFIG'] = array (
'metadata-set' => 'saml20-idp-remote',
'entityid' => 'CLIENTCONFIG',
'AssertionConsumerService' => 'http://myServer.com/acs_response',
'SingleSignOnService' =>
array (
0 =>
array (
'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',
'Location' => 'https://www.destination.com/',
),
'SingleLogoutService' => '',
'certificate' => 'x509.crt',
'certFingerprint'=>'OP:K7:91:89:9G:AB:0Y:JF:2V:F9:90:2V:6O:5C:41:9D:PL:FG:45:34',
'NameIDFormat' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient',
)
);
?>
authsources. php:
<?php
$config = [
/* This is the name of this authentication source, and will be used to access it later. */
'admin' => array(
// The default is to use core:AdminPassword, but it can be replaced with
// any authentication source.
'core:AdminPassword',
),
'CLIENTCONFIG' => array(
'saml:SP',
'idp'=>'CLIENTCONFIG',
'acs.Bindings' => array(
'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',
'urn:oasis:names:tc:SAML:1.0:profiles:browser-post',
),
'ForceAuthn' => TRUE,
'entityID' => 'CLIENTCONFIG',
'saml:idp' => 'CLIENTCONFIG',
'discoURL' => null,
'privatekey' => 'saml.pem',
'certificate' => 'saml.crt',
'redirect.sign' => TRUE,
'redirect.validate' => TRUE,
'OrganizationName' => array(
'en' => 'TheCompanyIWorkFor',
),
'OrganizationURL'=>'www.TheCompanyIWorkFor.com',
'sign.authnrequest'=> TRUE,
),
];
Прямо сейчас, когда я попробуйте вот что говорит мой SAML инспектор : Если вы заметили, что мой ACS не соответствует AS C, который я ввел. Я думаю, что это настройка по умолчанию.
<samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
ID="_1234567890987654321234567890QWERTYUIOPASDFGHJKL"
Version="2.0"
IssueInstant="2020-02-10T14:36:01Z"
Destination=""
AssertionConsumerServiceURL="http://mywebsite.com/module.php/saml/sp/saml2-acs.php/CLIENTCONFIG"
ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
>
<saml:Issuer>CLIENTCONFIG</saml:Issuer>
<samlp:NameIDPolicy Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient"
AllowCreate="true"
/>
</samlp:AuthnRequest>
Это мой метод UserController, который выбирает маршрут входа в систему:
use SimpleSAML\Auth\Simple;
public function getLogin(){
if(!\Auth::check()) {
$auth = New Simple('CLIENTCONFIG');
dump('getLogin method');
$auth->requireAuth([
'ReturnTo' => 'http://myWebsite/dashboard',
'KeepPost' => FALSE,
]);
\SimpleSAML\Session::getSessionFromRequest()->cleanup();
}
$data=Array();
// I get throw into an infinite loop of request generation.
return view('user.login', $data);
}
Я не очень много знаю о SSO, и я слишком долго занимался этим вопросом! Поэтому, если кто-то может помочь настроить его как пакет composer, я был бы признателен. Цель состоит в том, чтобы попасть по URL-адресу единого входа и быть перенаправленным в IDP для входа в систему, а затем быть отправленным обратно. Это, вероятно, слишком много информации, и она была взломана, но мне нечего терять на этом этапе.
И нет, это не одно и то же: Единая регистрация при использовании оболочки SimpleSaml Php на Laravel этот вопрос фактически относится к другому пакету.
Спасибо!