Я использую SimpleSAMLphp
как IdP
для кучи приложений у нас есть, главным образом Drupal сайт. Я использовал SQL как источник authsource на IdP
и работает для аутентификации пользователей, ответ возвращается к Drupal и пользователи аутентифицированы. Все хорошо !SimpleSAMLphp генерировать утверждение
Однако нам также необходимо использовать социальный вход (логин с Twitter, Facebook и т. Д.). SimpleSAMLphp поддерживает OAuth, я поставил его и Войти работает на IdP с социальными счетами, SimpleSAML создает сеанс и печенье, но я не прошел проверку подлинности на сайте Drupal.
Что мне нужно сделать, это заполнить запрос, вернувшись на Drupal и аутентифицировать пользователя там, то есть выпустить подтверждение на Drupal на успех.
Как и в источнике SQL, я сопоставил атрибуты в каждом из исходных файлов (Twitter.php, Facebook.php и т. Д.), Однако, когда SQL auth возвращается к Drupal и создает сеанс, остальные просто отображают свои атрибуты в шаблоне.
Как я могу сгенерировать и отправить подтверждение для Drupal из этих социальных учетных записей, чтобы аутентифицировать моих пользователей?
saml10-sp-remote.php (IdP)
$metadata['https://durpal_url/simplesaml_drupal_sp/module.php/saml/sp/metadata.php/sp'] = array (
'SingleLogoutService' =>
array (
0 =>
array (
'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',
'Location' => 'https://durpal_url/simplesaml_drupal_sp/module.php/saml/sp/saml2-logout.php/sp',
),
1 =>
array (
'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:SOAP',
'Location' => 'https://durpal_url/simplesaml_drupal_sp/module.php/saml/sp/saml2-logout.php/sp',
),
),
'AssertionConsumerService' =>
array (
0 =>
array (
'index' => 0,
'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',
'Location' => 'https://durpal_url/simplesaml_drupal_sp/module.php/saml/sp/saml2-acs.php/sp',
),
1 =>
array (
'index' => 1,
'Binding' => 'urn:oasis:names:tc:SAML:1.0:profiles:browser-post',
'Location' => 'https://durpal_url/simplesaml_drupal_sp/module.php/saml/sp/saml1-acs.php/sp',
),
2 =>
array (
'index' => 2,
'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact',
'Location' => 'https://durpal_url/simplesaml_drupal_sp/module.php/saml/sp/saml2-acs.php/sp',
),
3 =>
array (
'index' => 3,
'Binding' => 'urn:oasis:names:tc:SAML:1.0:profiles:artifact-01',
'Location' => 'https://durpal_url/simplesaml_drupal_sp/module.php/saml/sp/saml1-acs.php/sp/artifact',
),
),
'certData' => 'xxxx',
);
authsources.php (IdP)
'sql' => array(
'sqlauth:SQL',
'dsn' => 'mysql:host=localhost;dbname=db',
'username' => 'user',
'password' => 'pass',
'query' => 'SELECT u.uid, u.name, u.mail, r.name AS role FROM users u JOIN users_roles ur on ur.uid = u.uid JOIN role r on r.rid = ur.rid where u.mail = :username AND pass = MD5(:password);',
),
'facebook' => array(
'authfacebook:Facebook',
'api_key' => 'xxxx',
'secret' => 'xxxx',
'req_perms' => 'email',
),
'linkedin' => array(
'authlinkedin:LinkedIn',
'key' => 'xxxx',
'secret' => 'xxxx',
),
'twitter' => array(
'authtwitter:Twitter',
'key' => 'xxxx',
'secret' => 'xxxx',
'force_login' => true,
),
saml20-idp-remote.php (SP, Drupal)
$metadata['http://idp_url/simplesaml/saml2/idp/metadata.php'] = array (
'metadata-set' => 'saml20-idp-remote',
'entityid' => 'http://idp_url/simplesaml/saml2/idp/metadata.php',
'SingleSignOnService' =>
array (
0 =>
array (
'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',
'Location' => 'http://idp_url/simplesaml/saml2/idp/SSOService.php',
),
),
'SingleLogoutService' =>
array (
0 =>
array (
'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',
'Location' => 'http://idp_url/simplesaml/saml2/idp/SingleLogoutService.php',
),
),
'certData' => 'xxx',
'NameIDFormat' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient',
);
saml20-idp-hosted.php (IdP)
$metadata['__DYNAMIC:1__'] = array(
'host' => '__DEFAULT__',
'privatekey' => 'mysite.com.key',
'certificate' => 'mysite.com.crt',
'auth' => 'sql',
);
Опубликовать некоторые из них. Является ли IDP настроенным на использование социальных поставщиков в качестве источника аутсорсинга? Похоже, вы просто настроили дополнительные источники authsources и не настроили IDP для их использования. – Patrick
@Patrick обновлен! IdP настроен на использование социального как authsource, IdP указывает на SP и SP на IdP. С этой конфигурацией, только с использованием SQL authsource на самом деле создает сеанс на Drupal – blackbird
, вы можете также включить 'saml20-idp-hosting.php' из вашего idp? – Patrick