sgomez / simplesamlphp-module-oauth2
Requires
- php: >=5.5.9
- league/oauth2-server: ~6.0
- nette/forms: ~2.4
- sgomez/simplesamlphp-module-dbal: ~2.0
- simplesamlphp/composer-module-installer: ~1.0
- zendframework/zend-diactoros: ~1.3
Requires (Dev)
- simplesamlphp/saml2: ~3.0
- simplesamlphp/simplesamlphp: dev-master as 2.0
README
有什么新功能?
从版本1.2.x和2.2.x开始,此模块支持通过客户端支持不同的AuthSources,而不是所有都使用一个。如果您来自版本<1.2和<2.2,您必须更新模式。请参阅“创建或更新模式”部分。
安装
此包通过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
配置
此模块需要配置sgomez/simplesamlphp-module-dbal模块。它作为依赖项安装,但您需要阅读模块信息并配置它。
创建或更新模式
您需要运行以下命令以使用DBAL存储模块创建模式:
bash$ vendor/bin/dbalschema
配置模块
将模板文件复制到配置目录
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
获取属性
为了恢复用户属性,您需要在包含访问令牌的Authorization
头中将访问令牌作为Bearer Token发送到用户信息页面:{{baseurlpath}}/module.php/oauth2/userinfo.php
示例
curl --request GET \
--url http://server.com/simplesaml/module.php/oauth2/userinfo.php \
--header 'authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1Ni...'