首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >开放ID实现PowerSchool PHP

开放ID实现PowerSchool PHP
EN

Stack Overflow用户
提问于 2018-03-07 07:35:39
回答 1查看 478关注 0票数 1

我已经查看了PowerSchool关于OpenID实现的文档。然而,我认为它忽略了重要的信息,即我们如何传递所需的属性。我已经研究过其他平台中的示例实现。但是,它们似乎与文档所讨论的不同。

在这种情况下,我如何在PHP中实现PowerSchool的开放ID。经过许多斗争,我已经有第三方网站成功地执行握手,但是,没有属性值被检索,没有错误,甚至在日志中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-07 07:46:10

PowerSchool的开放ID SSO (单点登录)目前只有在请求从PowerSchool的站点启动时才能工作。因此,从创建Open链接插件开始。

SSO链接插件

代码语言:javascript
复制
<?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. 导航到System ->系统设置、->插件管理配置、->安装、->、安装插件->、启用插件。
  4. 插件现在应该可以在ui_contexts中提供的上下文中看到,即Admin和左侧导航。

LightOpenID

转到LightOpenID并将其添加到您的项目中。

使用PowerSchool和属性请求进行身份验证

在openid主机插件中提到的路径上,/openidlogin添加所需的属性并重定向到身份验证url:

代码语言:javascript
复制
$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->别名$别名= 'http://axschema.org/‘。$field; 至 $this->别名$别名= $field;
  2. 导航到LightOpenID.php -> getAxAttributes()并进行更改 $key = substr($this->getItem($prefix )。'_type_‘.( $key),$length); 至 $key = $this->getItem($prefix )。'_type_‘.$key);

验证和检索用户属性

在Open的返回URL (即authenticateopenid )中指定的路径上,验证用户并检索其属性:

代码语言:javascript
复制
$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.";
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49146474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档