SAML/Cognito/Laravel: Laravel에서 Cognito를 통해 ADFS 인증을 사용하는 방법
예상 프로세스와 논리
통합이 완료되면 이것이 바로 예상되는 인증 프로세스입니다.
/saml/login
로 방향을 바꾸라고 알린다./saml/login
루트의 논리적 인증 코드를 받아AWS Cognito에 들어가access 영패로 교환하고 이 영패는 사용자의 세션 데이터에 삽입됩니다.또한 Laravel 데이터베이스에 사용자를 만들어 Laravel에 로그인합니다.그리고 그들은 처음 요청한 페이지로 다시 지정되었다.코니토
이 부분은 상대적으로 간단하다. AWS에서 제공하는 레이아웃은 양호하지만, 만약 당신이 보기보다 읽는 것을 더 좋아한다면, 나도 그것을 상세하게 소개할 것이다. 특히 나의 예에서, 우리는 기존의 ADFS 서버를 통합해야 한다.
federationmetadata/2007-06/federationmetadata.xml
다운로드하여 저장하거나 다음에 Cognito에 전달할 URL만 저장할 수 있습니다.https://mylaraveldashboard.com/saml/login
일 수 있습니다.참고:http://localhost:8000/saml/login
로 설정하십시오(감사합니다.이 점을 지적해 주셔서 감사합니다.
라빌
COGNITO_APP_ID=(this is the code that you noted earlier while setting up an app for your user pool)
COGNITO_APP_REGION=eu-west-2 (or whatever your region is)
COGNITO_HOSTED_UI_URL=(you visted this url earlier, it's your sign in page)
COGNITO_REDIRECT_URL=(this is the one you provided to the app client settings on cognito, and should be a link to a page in your application)
COGNITO_API_BASE_URI=(this will look something like https://[user-pool-chosen-domain-name].auth.[aws-region].amazoncognito.com)
composer require aws/aws-sdk-php
합니다.routes/web.php
파일의 본문입니다.Route::middleware(['auth', 'cognito'])->group(function () {
Route::get('/', function () {
return view('welcome');
})->name('welcome');
// Any other pages you need to protect behind authentication go here
});
Route::get('/saml/login', [LoginController::class, 'samlLogin']);
php artisan make:middleware EnsureCognitoAuthenticates
.이것은 우리가 업데이트할 수 있도록 관련 파일을 만들 것이다.(으)로 변경해야 합니다.app/Http/Kernel.php
수조에 routeMiddleware
다음에 'cognito' => \App\Http\Middleware\EnsureCognitoAuthenticates::class,
를 추가한다.다음은 중간부품 자체를 작성하는 것이다.나는 간략한 버전과 posted it as a gist here을 직접 만들었다.If you want to know more about these AWS API endpoints we're calling, their documentation is available here: https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-userpools-server-contract-reference.html
auth
- Laravel이 요청한 모든 실행에 대한 기본 인증입니다.app/Http/Middleware/Authenticate.php
기능이 사용자가 로그인해야 할 때 원하는 페이지로 바뀌는지 확인하십시오.이것은 이름이 지정된 로그인 경로이지만 관리되는 UI의 URL을 되돌려 한 걸음 건너뛸 수 있습니다.내 유효성 검사 중간부품은 다음과 같습니다. /**
* Get the path the user should be redirected to when they are not authenticated.
*
* @param \Illuminate\Http\Request $request
* @return string|null
*/
protected function redirectTo($request)
{
$attemptedUrl = $request->fullUrl();
if (!$request->expectsJson()) {
return route('login', ["desired_url" => urlencode($attemptedUrl)]);
}
}
결론
따라서 Laravel 및 AWS Cognito와 함께 실행되는 SAML/ADFS 인증 체험이 가능합니다.도움이 되었으면 좋겠습니다.
나는 개선할 수 있는 많은 방법이 있다고 믿는다. 나에게 너의 생각을 말해 줘.
Reference
이 문제에 관하여(SAML/Cognito/Laravel: Laravel에서 Cognito를 통해 ADFS 인증을 사용하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/taelkir/saml-cognito-laravel-how-to-use-adfs-authentication-through-cognito-in-laravel-3a74텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)