【问题标题】:OpenId Connect with php or Java scriptOpenId 使用 php 或 Javascript 连接
【发布时间】:2019-10-17 18:03:09
【问题描述】:

我需要在 PHP 站点中实现 SSO

当用户点击登录按钮时,我需要显示与身份服务器连接的 SSO 表单

我真的不知道从哪里开始

目前我只知道我必须使用 OpenID Connect

我想知道是否可以选择使用 Javascript

我花了很长时间在谷歌等网站上四处寻找,但我很难找到一个好的简单教程。

任何人都可以提供任何指针吗?

【问题讨论】:

    标签: php single-sign-on openid-connect


    【解决方案1】:

    我的公司通常推荐PHPLeague's OAuth2 client 用于 PHP 集成。 README.md 中有示例代码,但基本上

    • 在 $Provider 中包含相关的 Client Key 和 Secret,
    • 使用 $Provider 调用 getAuthorizationURL(),这会将用户重定向到登录页面,并使用 ?code=[stuff] 返回您的代码,
    • 然后您可以使用$_GET['code'] 中的值从身份提供者那里获取访​​问令牌,并且
    • 使用该令牌,如果您需要从身份服务器上的安全 API 中提取某些内容,您将能够根据需要使用 getAuthenticatedRequest,或者
    • 您也可以只返回有关$resourceOwner 的用户信息。

    访问令牌有过期信息等,并有根据需要刷新令牌的功能。总而言之,用 PHP 做起来真的很简单。

    我避免使用 JS 进行 OAuth,但我很确定这只是个人喜好。还有good javascript libraries

    编辑:

    要包含 OIDC 支持,请确保指定 OIDC 范围:

    $options = ['scope' => ['openid']];

    并使用 $options 数组调用 getAuthorizationUrl,例如:

    $authorizationUrl = $provider->getAuthorizationUrl($options);

    【讨论】:

    • 好的,谢谢,似乎有人坚持我也使用 OpenId Connect
    • OAuth 是 OIDC 的基础... OIDC 只是 OAuth 2.0 的配置文件。
    • 具体来说,对于 PHPLeague,您应该使用:$options = ['scope' => ['openid']]; 并使用 $options 数组调用 getAuthorizationUrl,例如:$authorizationUrl = $provider->getAuthorizationUrl($options);
    • 感谢以上所有我不知道从哪里可以找到秘密我不认为那是在 c# 版本中
    • @kallen 这是否与使用隐式流的内部身份服务器兼容?
    猜你喜欢
    • 2018-04-09
    • 2017-11-19
    • 1970-01-01
    • 2015-12-05
    • 2014-01-11
    • 1970-01-01
    • 2011-01-26
    • 1970-01-01
    • 2018-05-01
    相关资源
    最近更新 更多