mirror of
http://124.126.16.154:8888/singularity/hyperf-saml.git
synced 2026-01-15 07:15:05 +08:00
feat(sp.slo): 实现了退出单点登录的服务
This commit is contained in:
@@ -9,7 +9,60 @@
|
||||
|
||||
namespace Singularity\HyperfSaml\Services\Sp;
|
||||
|
||||
use Hyperf\HttpServer\Contract\RequestInterface;
|
||||
use Hyperf\HttpServer\Contract\ResponseInterface;
|
||||
use Psr\Http\Message\ResponseInterface as PsrResponseInterface;
|
||||
use Singularity\HyperfSaml\Services\Base;
|
||||
use Teapot\StatusCode\RFC\RFC7231;
|
||||
|
||||
/**
|
||||
* 单点退出登录
|
||||
* Singularity\HyperfSaml\Services\Sp\Slo@HyperfSaml
|
||||
*
|
||||
* @author 李东云<dongyun.li@luxcreo.cn>
|
||||
* Powered by PhpStorm
|
||||
* Created on 2022/4/27
|
||||
*/
|
||||
class Slo
|
||||
{
|
||||
public function __construct(
|
||||
private Base $base,
|
||||
private RequestInterface $request,
|
||||
private ResponseInterface $response,
|
||||
) {
|
||||
}
|
||||
|
||||
/**
|
||||
* 重定向方式退出单点登录
|
||||
*
|
||||
* @param string $uid
|
||||
* @param string $originToken
|
||||
*
|
||||
* @return \Psr\Http\Message\ResponseInterface
|
||||
*/
|
||||
public function redirect(string $uid, string $originToken): PsrResponseInterface
|
||||
{
|
||||
$idpId = config('saml.server.idp_logout_url');
|
||||
$issuer = config('saml.client.entity_id');
|
||||
|
||||
$relayState = $this->request->query('relayState');
|
||||
|
||||
$url = $this->base->createLogoutRequest(
|
||||
uid: $uid,
|
||||
token: $originToken,
|
||||
idpID: $idpId,
|
||||
issuer: $issuer,
|
||||
relayState: $relayState
|
||||
);
|
||||
|
||||
return $this->response->redirect($url, RFC7231::FOUND);
|
||||
}
|
||||
|
||||
/**
|
||||
* 回调方式退出单点登录(IDP 通知 SP)
|
||||
* @return void
|
||||
*/
|
||||
public function callback()
|
||||
{
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user