Поэтому я пытаюсь настроить вход в систему единого входа, используя Azure Active Directory в качестве IdP и используя модуль simpleSAMLphp для Mediawiki для его реализации, но я сталкиваюсь с ошибкой, у которой нет абсолютно никакой идеи, как ее решить.
Контекст:
Я следовал этим инструкциям: https://medium.com/vivritiengineering/mediawiki-and-azure-single-sign-on-e3fbc13d1f46 Но вместо сервера, размещенного на серверах AWS, у меня есть виртуальная машина, работающая в Azure.
Я использую это изображение для моей виртуальной машины: https://bitnami.com/stack/mediawiki/cloud
Действия, которые приводят к проблеме:
Я вхожу на сервер mediawiki, пытаюсь войти в систему, получаю отправку на страницу login.microsoftonline.com. Я пытаюсь войти в систему, а затем возвращаюсь обратно на страницу mediawiki /Special:UserLogin с сообщением об ошибке "Пользователь не может быть аутентифицирован".
Журналы:
Находится в '/opt/bitnami/apache2/logs/error_log':
[
Tue Jan 29 04:07:04.007768 2019] [proxy_fcgi:error] [pid 32390:tid 139796580050688] [client my.ip.addr.45:63407]
AH01071: Got error 'PHP message: PHP Notice:
Undefined variable: attributes in /opt/bitnami/apps/mediawiki/htdocs/extensions/SimpleSAMLphp/includes/SimpleSAMLphp.php on line 47\n
PHP message: PHP Warning: array_key_exists() expects parameter 2 to be array, null given in /opt/bitnami/apps/mediawiki/htdocs/extensions/SimpleSAMLphp/includes/SimpleSAMLphp.php on line 47\n'
, referer: https://login.microsoftonline.com/kmsi
Найдено в /opt /bitnami /apache2 /logs /access_log ':
my.ip.addr.45 - - [29/Jan/2019:04:07:03 +0000] "POST /simplesaml/module.php/saml/sp/saml2-acs.php/default-sp HTTP/1.1" 303 850my.ip.addr.45 - - [29/Jan/2019:04:07:03 +0000] "GET /Special:PluggableAuthLogin HTTP/1.1" 302 -
my.ip.addr.45 - - [29/Jan/2019:04:07:04 +0000] "GET /index.php?title=Special:UserLogin/return&wpLoginToken=87d0ee94955902b61de847138e89d4ff5c4fd146%2B%5C HTTP/1.1" 302 -
my.ip.addr.45 - - [29/Jan/2019:04:07:04 +0000] "GET /Special:UserLogin HTTP/1.1" 200 5472
my.ip.addr.45 - - [29/Jan/2019:04:07:05 +0000] "GET /resources/assets/poweredby_mediawiki_88x31.png HTTP/1.1" 304 -
my.ip.addr.45 - - [29/Jan/2019:04:07:05 +0000] "GET /load.php?debug=false&lang=en&modules=mediawiki.htmlform.styles%7Cmediawiki.legacy.commonPrint%2Cshared%7Cmediawiki.skinning.interface%7Cmediawiki.special.userlogin.common.styles%7Cmediawiki.special.userlogin.login.styles%7Cmediawiki.ui%7Cmediawiki.ui.button%2Ccheckbox%2Cinput%2Cradio%7Cskins.vector.styles&only=styles&skin=vector HTTP/1.1" 200 13492
my.ip.addr.45 - - [29/Jan/2019:04:07:05 +0000] "GET /resources/assets/wiki.png?de8c8 HTTP/1.1" 304 -
my.ip.addr.45 - - [29/Jan/2019:04:07:05 +0000] "GET /load.php?debug=false&lang=en&modules=startup&only=scripts&safemode=1&skin=vector HTTP/1.1" 200 38569
my.ip.addr.45 - - [29/Jan/2019:04:07:05 +0000] "GET /load.php?debug=false&lang=en&modules=jquery%7Cjquery.lengthLimit%7Cmediawiki.htmlform&skin=vector&version=0g0bm48 HTTP/1.1" 200 163379
my.ip.addr.45 - - [29/Jan/2019:04:07:05 +0000] "POST /mod_pagespeed_beacon?url=https%3A%2F%2Fcompany-wiki.region.cloudapp.azure.com%2FSpecial%3AUserLogin HTTP/1.1" 204 -
my.ip.addr.45 - - [29/Jan/2019:04:07:05 +0000] "GET /favicon.ico HTTP/1.1" 200 3076
Комментарии:
Вот что я думаю о соответствующем коде '/opt/bitnami/apps/mediawiki/htdocs/extensions/SimpleSAMLphp/includes/SimpleSAMLphp.php', указанном в error_logs.
``` php
class SimpleSAMLphp extends PluggableAuth {
protected $attributes;
/**
* Get the user's username. Override this if you need to change
* the appearance from what SAML gives.
*
* @param string &$username going into this
* @param int &$userId the user's id
* @param string|null &$errorMessage if you want to return an error message.
* @return bool|string false if there was a problem getting the username.
*
* @SuppressWarnings(PHPMD.Superglobals)
*/
protected function getUsername( &$username = '', &$userId = 0, &$errorMessage = null ) {
if ( isset( $GLOBALS['wgSimpleSAMLphp_UsernameAttribute'] ) ) {
$userNameAttribute = $GLOBALS['wgSimpleSAMLphp_UsernameAttribute'];
if ( is_array( $userNameAttribute ) ) {
$username = "";
foreach ( $userNameAttribute as $attribute ) {
if ( array_key_exists( $attribute, $attributes ) ) {
if ( $username != "" ) {
$username .= " ";
}
$username .= $attributes[$attribute][0];
} else {
wfDebug( 'SimpleSAMLphp: Could not find user name attribute ' .
$attribute );
return false;
}
}
} else {
if ( array_key_exists( $userNameAttribute, $attributes ) ) {
$realname = $attributes[$userNameAttribute][0];
} else {
wfDebug( 'SimpleSAMLphp: Could not find user name attribute ' .
$attributes );
return false;
}
}
} else {
wfDebug( 'SimpleSAMLphp: $wgSimpleSAMLphp_UsernameAttribute is not set' );
return false;
}
return $username;
}
```
По сути, $ attribute не заполняется, и я не знаю, как это исправить. Любое руководство или направление будет наиболее ценно.