programster / saml
一个用于与SAML SSO进行接口交互的库。它通过封装 onelogin/php-saml 包来实现这一点。
2.3.1
2022-05-18 14:57 UTC
Requires
- php: >=8.0.0
- ext-dom: *
- ext-xml: *
- onelogin/php-saml: ^4.0
README
一个用于与SAML SSO集成的包。
示例用法
所有示例都需要首先创建一个包含所有设置的SAML "客户端"。必须按照以下方式创建它
$spConfig = new Programster\Saml\ServiceProviderConfig( entityId: APP_SERVICE_PROVIDER_IDENTITY, name: APP_SERVICE_PROVIDER_NAME, description: "A test service provider", loginHandlerUrl: APP_URL . "/auth/saml-login-handler", logoutHandlerUrl: APP_URL . "/auth/saml-logout-handler", publicCert: file_get_contents(SERVICE_PROVIDER_CERT_PATH), privateKey: file_get_contents(SERVICE_PROVIDER_PRIVATE_KEY_PATH) ); $idpConfig = new \Programster\Saml\IdentityProviderConfig( entityId: IDENTITY_PROVIDER_IDENTITY_URI, authUrl: IDENTITY_PROVIDER_AUTH_URL, logoutUrl: IDENTITY_PROVIDER_LOGOUT_URL, publicSigningCertificates: [file_get_contents(IDENTITY_PROVIDER_PUBLIC_SIGNING_CERT)], ); $samlConfig = new \Programster\Saml\SamlConfig($spConfig, $idpConfig); $samlClient = new \Programster\Saml\SamlClient($samlConfig);
我知道这听起来有点冗长,但客户端需要配置很多设置,我更喜欢这种方式,而不是期望开发者只需传递一个键值对数组,并期望他们知道需要设置哪些键等。
一旦有了SAML客户端,就可以用它来处理所有请求/响应,如下所示
将用户发送到SSO的签名SAML请求中登录,然后通过用户的信息将用户重定向回我们的网站
$returnToURL = "https:///saml-login-handler"; $samlClient->handleUserLoginRequest($returnToURL);
然后使用客户端处理SSO登录并重定向回我们的网站的用户详细信息响应
$response = $samlClient->handleSamlLoginResponse(); $userAttributes = $response->getUserAttributes(); $userEmail = $userAttributes['email'][0];
使用客户端向SSO发送注销请求
$returnToUrl = 'http://my.domain.com/auth/saml-logout-handler'; $samlClient->handleUserLogoutRequest($returnToUrl);
处理该注销请求的SSO响应
$ssoLoggedOutUrl = $samlClient->handleSamlLogoutResponse();