notakey / simplesamlphp-module-oauth2
一个添加OAuth 2.0协议支持的SimpleSAMLphp模块。
Requires
- php: >=7.2.0
- laminas/laminas-diactoros: ~2.3
- laminas/laminas-httphandlerrunner: ~1.1
- league/oauth2-server: ~8.1
- nette/forms: ~2.4
- simplesamlphp/composer-module-installer: ~1.0
Requires (Dev)
- simplesamlphp/saml2: dev-master#00e38f85b417be1e10a2d738dd2f5ea82edb472c as 2.2
- simplesamlphp/simplesamlphp: dev-master as 2.0
This package is auto-updated.
Last update: 2024-09-29 05:09:22 UTC
README
安装
此软件包通过SimpleSAMLphp模块安装支持OAuth2协议,该模块可以通过Composer安装。安装可以像执行以下命令一样简单:
composer.phar require sgomez/simplesamlphp-module-oauth2 1.0.0 # for SSP < 1.14
composer.phar require sgomez/simplesamlphp-module-oauth2 ~1.0 # for SSP >= 1.14
composer.phar require sgomez/simplesamlphp-module-oauth2 ~2.0 # for SSP >= 2.0|master
配置
配置模块
将模板文件复制到配置目录
cp modules/oauth2/config-template/module_oauth2.php config/
并编辑它。选项是自解释的。
创建oauth2客户端
要添加和删除Oauth2客户端,您需要使用管理员账户登录到SimpleSAML。打开“联合”标签页,您将看到“OAuth2客户端注册表”选项。
您可以指定任意多的重定向地址。
使用模块
此模块基于PHP League的OAuth2服务器,并支持隐式和显式令牌。
创建oauth2密钥
使用的oauth2库生成Json Web Tokens以创建访问令牌,因此您需要创建公钥和私钥证书密钥
要生成私钥,请在终端运行以下命令
openssl genrsa -out cert/oauth2_module.pem 1024
如果您想为您的私钥提供密码短语,请替换以下命令
openssl genrsa -passout pass:_passphrase_ -out cert/oauth2_module.pem 1024
然后从私钥中提取公钥
openssl rsa -in cert/oauth2_module.pem -pubout -out cert/oauth2_module.crt
或者使用私钥生成时提供的密码短语
openssl rsa -in cert/oauth2_module.pem -passin pass:_passphrase_ -pubout -out cert/oauth2_module.crt
如果您使用了密码短语,请记得在module_oauth2.php配置文件中配置它。
显式令牌
要请求显式令牌,请参阅授权代码授予帮助页面,以了解您需要发送的参数(参见第一部分)。
授权服务器地址是:{{baseurlpath}}/module.php/oauth2/authorize.php
现在您需要请求访问令牌。请参阅第二部分。
访问令牌服务器地址是:{{baseurlpath}}/module.php/oauth2/access_token.php
隐式令牌
要请求隐式令牌,请参阅隐式授予帮助页面以了解您需要发送的参数。
授权服务器地址是:{{baseurlpath}}/module.php/oauth2/authorize.php
获取属性
要恢复用户属性,您需要将带有访问令牌作为Bearer Token的Authorization
头发送到userinfo页面:{{baseurlpath}}/module.php/oauth2/userinfo.php
示例
curl --request GET \
--url http://server.com/simplesaml/module.php/oauth2/userinfo.php \
--header 'authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1Ni...'