기존에 직장에서 일 할 때에는 한가지 인증 방식을 익혀두고, 빨리빨리 처리 해야 하니 솔직히 기존 것 가져다 쓰기 바빴다..
예전에 포스팅 한 Passport 인증 처리 방식으로 주로 사용 했었다.
이것도 오늘 알게된 사실인데 sanctum이라는 인증 방식이 또 있더라..
사실 라라벨을 5점대 부터 사용해서 그런지 추가 기능들이 이렇게 많을 줄 몰랐다 ㅎㅎ..
둘의 차이점은 다음과 같다.
목적
Sanctum: SPA(Single Page Application)나 모바일 앱과 같은 클라이언트 측 JavaScript 애플리케이션을 위해 설계된 경량 패키지
Passport: 클라이언트와 서버 사이의 API를 보호하는 데 사용되는 OAuth2 서버
토큰 타입
Sanctum: 토큰 타입으로 쿠키 또는 API 토큰을 사용
Passport: OAuth2 토큰을 사용하여 API를 보호
인증 방식
Sanctum: 쿠키를 사용하여 API에 대한 인증 처리
Passport: OAuth2 프로토콜을 사용하여 인증을 처리
복잡성
Sanctum: 구현 및 유지보수가 상대적으로 간단
Passport: OAuth2 프로토콜을 구현하므로 구현 및 유지보수가 더 복잡
Passport는 여러가지 인증 방식을 지원하는데, 기존에 내가 작성한 방식은 password grant type 이었다.
이외에도
authorization code Grant, Implicit Grant, client Credentials Grant 방식등이 있다.
Authorization Code Grant
웹 애플리케이션과 같은 클라이언트에서 사용하는 인증 방식
안전한 인증을 보장하기 위해 다단계 인증 프로세스 사용
대규모 애플리케이션에서 사용하기 적합
Implicit Grant
SPA (Single-Page Application)와 같은 클라이언트에서 사용하는 인증 방식
서버간 통신이 필요 없으며, 클라이언트에서 바로 토큰 발급받음
간편하게 구현 가능하지만 보안적인 이슈가 있을 수 있음
Password Grant
사용자가 직접 자격 증명을 제공하는 인증 방식
매우 간단하게 구현 가능하지만, 서버에서 직접 암호를 처리하므로 보안 위협 가능성이 있음
외부에서 접근할 수 없는 사내 애플리케이션 등에 적합
Client Credentials Grant
클라이언트 애플리케이션 자체의 인증을 위한 인증 방식
클라이언트 애플리케이션에서 직접 발급 받으며, 사용자와는 별도로 인증
클라이언트 애플리케이션이 API를 호출할 때 사용
Authorization Code Grant 방식이 주로 네이버, 카카오 로그인과 같은 방식으로 접해본 방식이다.
대충 샘플링..
public function callback(Request $request)
{
$http = new GuzzleHttp\Client;
$response = $http->post('http://your-app.com/oauth/token', [
'form_params' => [
'grant_type' => 'authorization_code',
'client_id' => 'client-id',
'client_secret' => 'client-secret',
'redirect_uri' => 'http://your-app.com/callback',
'code' => $request->code,
],
]);
return json_decode((string) $response->getBody(), true);
}
Route::get('/authorize', function () {
$query = http_build_query([
'client_id' => 'client-id',
'redirect_uri' => 'http://your-app.com/callback',
'response_type' => 'code',
'scope' => '',
]);
return redirect('http://your-app.com/oauth/authorize?'.$query);
});
음.. 참조해서 내일 한번 구축 해봐야겠다
'PHP > PHP' 카테고리의 다른 글
[Laravel] Task Scheduling (1) | 2023.05.11 |
---|---|
[Laravel] XSS Protect Middleware 구축 ( + CSRF 보호에 대한 주저리..) (0) | 2023.04.27 |
Laravel, Laravel Octane 그냥 공부 메모.. (0) | 2023.04.04 |
Laravel - passport를 이용한 로그인 구현 (Oauth) (2) | 2022.05.03 |
[Laravel] Laravel + Vue 연동 (0) | 2020.12.15 |