>  기사  >  php教程  >  SSO Single Sign-On의 PHP 구현 방법(Laravel 프레임워크)

SSO Single Sign-On의 PHP 구현 방법(Laravel 프레임워크)

高洛峰
高洛峰원래의
2016-12-28 16:12:172179검색

Laravel은 간단하고 우아한 PHP 웹 개발 프레임워크(PHP Web Framework)입니다. 누들과 같은 지저분한 코드에서 벗어날 수 있으며 완벽한 네트워크 앱을 구축하는 데 도움이 될 수 있으며 모든 코드 줄은 간결하고 표현력이 뛰어납니다.

제가 SSO를 제대로 이해하고 있는지 모르겠습니다.

세 개의 사이트가 있다고 가정합니다. a.baidu.com b.baidu.com c.baidu.com

a.baidu.com은 검증된 사용자입니다.

b와 c는 클라이언트(하위 시스템) 역할을 합니다.

b와 c는 로그인이 필요할 때 a로 점프하고, 로그인 후 점프할 링크를 나타내는 매개변수 소스를 전달합니다.

사이트는 일반적인 로그인 방식(사용자 비밀번호 확인)이며, 확인 성공 후 일부 처리가 이루어집니다. 티켓은 생성되어야 합니다. 안전하다면 생성 방법은 중요하지 않습니다. 그런 다음 캐시에 저장합니다. 여기서 궁금한 점이 있으시면 나중에 요약해 드리겠습니다. 로그인에 성공한 후 (url.

``` php private function getTicketUrl(\)source)
{
\(ticket = md5(time()+key); Cache::put(\)ticket, $user, 120);
$url = $source . '?ticket=' . $ticket;
return $url;
}

A역이 티켓을 가지고 B역으로 점프한다고 가정해 보겠습니다. (b.baidu.com?ticket=xxxxxxxxxxxxxxxx```)

사이트 b는 글로벌 필터를 만들고 티켓을 수락한 다음 스테이션 a에 티켓이 a에 의해 생성되었는지 확인하도록 요청합니다.

사이트 b 필터 AppHttpMiddlewareCasAuthenticate 코드가 있는지 확인합니다. 티켓과 요청이 스테이션 a로 전송됩니다. 로그인하면 사용자 UID를 가져오고 로직이 완료되지만 몇 가지 질문이 있습니다.

1.
public function handle($request, Closure $next)
{
$ticket = $request->input('ticket');
if ($ticket) {
$result = json_decode('http://a.baidu.com' . '/auth/check-ticket?ticket=' . $ticket), true);
if ($result['state'] == "SUCCESS") {
$request->session()->flush();
Auth::loginUsingId($result['result']['uid']);
return redirect(redirect()->getUrlGenerator()->current());
}
}
return $next($request);


2. 스테이션 b가 이제 스테이션 c로 점프하면 사이트 B가 더 자주 활성화되고 캐시 시간이 항상 존재하기 때문입니다. 이때 사이트 B에서 사이트 C로 점프하고, 사이트 C는 로그인을 확인하기 위해 사이트 A로 점프하는데, 아직 로그인이 필요한 것으로 확인됩니다. 이것은 문제입니다. 우리의 비즈니스 모듈은 관련성이 없고 마음대로 점프하지 않을 것이기 때문에 지금은 이 문제를 고려하지 않겠습니다. 그러나 이것이 저에게는 정말 문제가 됩니다.

이 편집자는 SSO Single Sign-On의 PHP 구현 방법(Laravel 프레임워크).

SSO Single Sign-On의 추가 PHP 구현 방법(Laravel Framework)을 보려면 비용을 지불하세요. PHP 중국어 웹사이트를 주목하세요

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.