sngular / sngulauth
用于Saml和Openid-Connect的Keycloak身份验证包
1.5
2020-10-01 12:33 UTC
Requires
- firebase/php-jwt: ^4.0
- guzzlehttp/guzzle: 6.5.0
- league/oauth2-client: ^2.0
Requires (Dev)
- phpunit/phpunit: ^7.5
- symfony/var-dumper: ^4.3
README
开始之前,你需要一些参数
- authServerUrl: keycloak身份验证url
- realm: 为项目设置的区域名称
- clientId: 为项目设置的应用程序id
- clientSecret: 为项目设置的应用程序密钥
- redirectUri: 成功提示凭证后重定向的url(此url必须在keycloak客户端配置中有效)
- encryptionAlgorithm: 解码JWT信息的算法,默认为RS256
- encryptionKeyString: 一行中的公钥内容(不带BEGIN PUBLIC KEY和END PUBLIC KEY),用于解密JWT并获取用户信息。
身份验证过程
src/Provider/Keycloak/Protocol/Connect类需要一个参数数组来实例化
$auth = new Connect($config);
然后你可以构建重定向用户或显示链接的身份验证url
$authUrl = $auth->getAuthorizationUrl();
用户在Keycloak登录页面上输入其凭据后,将被重定向到redirectUri参数,并带有代码。现在你可以使用这些代码从keycloak获取令牌(League\OAuth2\Client\Token\AccessToken)
$token = $auth->authByCode($_GET['code']);
现在你可以从keycloak获取资源所有者(用户数据)
$user = $auth->getResourceOwner($token);
然后解密令牌以获取令牌有效载荷
$userData = $auth->decryptResponse($token->getToken());