openid — реализация Open ID Переполнение стека PowerSchool

Я изучил документацию PowerSchool по OpenID реализация. Тем не менее, я считаю, что нам не хватает важной информации, то есть того, как мы передаем необходимые атрибуты. Я посмотрел на примеры реализации в других платформы. Но они, похоже, отличаются от того, о чем идет речь в документации.

Как мне в этом случае реализовать Open ID PowerSchool в PHP. После долгих усилий у меня появился сторонний сайт для успешного выполнения рукопожатия, однако значения атрибутов не извлекаются и ошибок нет, даже в журналах.

0

Решение

Open SSO (единый вход) в PowerSchool в настоящее время работает только в том случае, если запрос инициирован с сайта PowerSchool. Поэтому начните с создания плагина ссылки Open ID.


SSO Link Plugin

<?xml version="1.0" encoding="UTF-8"?>
<plugin xmlns="http://plugin.powerschool.pearson.com"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation='http://plugin.powerschool.pearson.com plugin.xsd'
name="Insert Your PluginsName"version="1.0.0"description="Insert a description here">
<!-- The host name without scheme i.e., https. This is the host with which PowerSchool will perform the handshake -->
<!-- and will pass the attributes to. -->
<!-- NOTE: This host must have a valid SSL for this to work. -->
<openid host="www.myopenid.com">
<links>
<link display-text="Insert links display text here"title="Insert links title here"path="/openidlogin">
<!-- The relative path to the hostname Open ID initiation is performed on the host specified above i.e., -->
<!-- www.myopenid.com/openidlogin -->
<ui_contexts>
<!-- You may add other user contexts too i.e., guardian etc -->
<ui_context id="admin.header" />
<ui_context id="admin.left_nav" />
</ui_contexts>
</link>
</links>
</openid>
<publisher name="XYZ">
<contact email="xyzAtmyopenId.com"/>
</publisher>
</plugin>
  1. Сохраните вышеупомянутое как файл XML.
  2. Перейти на сайт администратора, т.е. xyzps.com/admin/home.html
  3. Перейдите в Система -> Параметры системы -> Настройка управления плагином -> Установить -> Установить плагин -> Включить плагин.
  4. Плагин должен теперь быть видимым в контекстах, представленных в ui_contexts, то есть в заголовке Admin и левой навигации.

LightOpenID

Направляйтесь к LightOpenID и добавьте его в свой проект.


Аутентификация с PowerSchool и запросами атрибутов

По пути, указанному в плагине для хоста openid, т.е. /openidlogin добавьте необходимые атрибуты и перенаправьте на URL-адрес аутентификации:

$openid = new LightOpenID("Insert hostname i.e., www.myopenid.com");

$openid->identity = $_GET['openid_identifier'];

$openid->required = array(
'email'=>'http://powerschool.com/entity/email'
);

$openid->returnUrl = 'Insert SSL enabled hostname i.e., https://www.myopenid.com/authenticateopenid';

header('Location: ' . $openid->authUrl());

Настроить LightOpenID

Прежде чем продолжить, нам нужно изменить LightOpenID, потому что он добавляет к атрибутам префикс http://axschema.org/ из-за чего значение атрибута не будет возвращено. Сделать это:

  1. Перейдите к LightOpenID.php -> axParams() и изменить

    $this->aliases[$alias] = 'http://axschema.org/' . $field;
    

    к

    $this->aliases[$alias] = $field;
    
  2. Перейдите к LightOpenID.php -> getAxAttributes() и изменить

    $key = substr($this->getItem($prefix . '_type_' . $key), $length);
    

    к

    $key = $this->getItem($prefix . '_type_' . $key);
    

Проверьте и получите атрибуты пользователя

По пути, указанному в обратном URL-адресе Open ID, т.е. authenticateopenid, проверьте пользователя и получите его атрибуты:

$openid = new LightOpenID("Insert hostname i.e., www.myopenid.com");

if ($openid->mode)
{
if ($openid->mode == 'cancel') {
echo "User has canceled authentication !";
} elseif ($openid->validate()) {

$data = $openid->getAttributes();
$email = $data['http://powerschool.com/entity/email'];
echo "</br>Email: " . $email . "</br>";

}
else {
echo "The user has not logged in";
}
}
else {
echo "Go to PowerSchool to log in.";
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]