Azure AD를 IdP로 설정하고 ALB로 사용자 인증을 시도했습니다.
추가 (2020-03-16)
사용자 클레임(x-amzn-oidc-data)의 expire는 2분인 것 같지만, 액세스 토큰(x-amzn-oidc-accesstoken)의 expire는 처음 로그인할 때부터 변하지 않는다(=만료됨) 것 같습니다.
상기 링크의 AWS 문서의 기술과 조금 맞지 않는 느낌이 듭니다만, 백엔드측은 문서 기재와 같이 유저 클레임으로 유저 인증하는 것이면 문제 없을까?
절차
1. HTML을 출력하는 Lambda를 만들고 ALB 대상으로 설정
아래 기사를 참고하여 Lambda를 만들고 ALB 대상으로 설정합니다.
htps : // / cs. 아 ws. 아마존. 이 m / 그럼 _ jp / 에 s 치 c ぉ d ぁ し ん g / ぁ st / あ p ぃ カ チ オン / ぁ MB 다 훗 c 치 온 s. HTML
ALB 리스너는 HTTPS로 설정하고 Route53에 ALB 별칭 레코드를 등록합니다.
lambda_function.pydef lambda_handler(event, context):
print(event)
res = {
"isBase64Encoded": False,
"statusCode": 200,
"statusDescription": "200 OK",
"headers": {
"Set-cookie": "cookies",
"Content-Type": "text/html"
}
}
res['body'] = """<html>
<head>
<title>hello world</title>
</head>
<body>
<h1>Hello World</h1>
</body>
</html>"""
return res
2. Azure AD에 애플리케이션 등록
Azure에 로그인하여 Azure Active Directory-App registrations에서 애플리케이션을 등록합니다.
Redirect URI는 다음을 지정합니다.
https://Route53에 등록한 ALB의 별칭 레코드/oauth2/idpresponse
그런 다음 응용 프로그램의 클라이언트 비밀을 만듭니다.
마지막으로 다양한 끝점을 확인합니다.
아래 명령으로도 확인할 수 있습니다.
curl https://login.microsoftonline.com/********-****-****-****-************/v2.0/.well-known/openid-configuration
3. ALB 설정
ALB 리스너를 편집하여 Authenticate 액션을 추가합니다.
ALB 설정값
대응하는 Azure측의 값
Authenticate
OIDC
Issure
Authorization endpoint의 "/oauth2/v2.0/authorize"부분을 "/v2.0"으로 대체 한 URL
Authorization endpoint
OAuth 2.0 authorization endpoint (v2)
Token endpoint
OAuth 2.0 token endpoint (v2)
User info endpoint
htps // g 등 ph. 미 c 로소 ft. 코 m / 어이 dc / 우세 린후
클라이언트 ID
Application (client) ID
Client secret
만든 비밀
4. 테스트
ALB의 별칭 레코드를 URL로 지정하면 로그인 화면이 표시됩니다.
로그인 후 Lambda가 출력하는 HTML이 표시되면 성공합니다.
CloudwatchLogs를 확인하면 액세스 토큰 등이 전달되고 있음을 알 수 있습니다.
잡감
def lambda_handler(event, context):
print(event)
res = {
"isBase64Encoded": False,
"statusCode": 200,
"statusDescription": "200 OK",
"headers": {
"Set-cookie": "cookies",
"Content-Type": "text/html"
}
}
res['body'] = """<html>
<head>
<title>hello world</title>
</head>
<body>
<h1>Hello World</h1>
</body>
</html>"""
return res
Azure에 로그인하여 Azure Active Directory-App registrations에서 애플리케이션을 등록합니다.
Redirect URI는 다음을 지정합니다.
https://Route53에 등록한 ALB의 별칭 레코드/oauth2/idpresponse
그런 다음 응용 프로그램의 클라이언트 비밀을 만듭니다.
마지막으로 다양한 끝점을 확인합니다.
아래 명령으로도 확인할 수 있습니다.
curl https://login.microsoftonline.com/********-****-****-****-************/v2.0/.well-known/openid-configuration
3. ALB 설정
ALB 리스너를 편집하여 Authenticate 액션을 추가합니다.
ALB 설정값
대응하는 Azure측의 값
Authenticate
OIDC
Issure
Authorization endpoint의 "/oauth2/v2.0/authorize"부분을 "/v2.0"으로 대체 한 URL
Authorization endpoint
OAuth 2.0 authorization endpoint (v2)
Token endpoint
OAuth 2.0 token endpoint (v2)
User info endpoint
htps // g 등 ph. 미 c 로소 ft. 코 m / 어이 dc / 우세 린후
클라이언트 ID
Application (client) ID
Client secret
만든 비밀
4. 테스트
ALB의 별칭 레코드를 URL로 지정하면 로그인 화면이 표시됩니다.
로그인 후 Lambda가 출력하는 HTML이 표시되면 성공합니다.
CloudwatchLogs를 확인하면 액세스 토큰 등이 전달되고 있음을 알 수 있습니다.
잡감
ALB의 별칭 레코드를 URL로 지정하면 로그인 화면이 표시됩니다.
로그인 후 Lambda가 출력하는 HTML이 표시되면 성공합니다.
CloudwatchLogs를 확인하면 액세스 토큰 등이 전달되고 있음을 알 수 있습니다.
잡감
Reference
이 문제에 관하여(Azure AD를 IdP로 설정하고 ALB로 사용자 인증을 시도했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sirotosiko/items/3c1da3c8f86373b91023텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)