스프링부트 2.0(스프링 5.0)으로 작성하는 RESTful API 서비스 Show
학습목차
수료조건
Apigee X 문서입니다. 이 주제에서는 OAuthV2 정책을 사용하여 JWT 액세스 토큰을 생성, 확인, 갱신하는 방법을 설명합니다. 소개JWT 작업을 사용하면 OAuthV2 정책이 JWT 형식으로 액세스 토큰을 발급하는 방법을 설명하는 표준인 IETF RFC 9068을 준수하는 액세스 토큰을 생성, 확인, 갱신할 수 있습니다. JWT는 일반적으로 연결된 애플리케이션 간의 클레임 또는 어설션을 공유하는 데 사용됩니다. JWT 형식으로 OAuthV2 액세스 토큰을 발급하는 것은 비공개 액세스 토큰을 발급하는 것의 대안입니다. JWT에 대해 구성된 경우 OAuthV2 정책은 헤더, 페이로드, 점으로 구분된 서명으로 구성된 Base64로 인코딩된 JWT를 생성하고 반환합니다. 예를 들면 다음과 같습니다. 그림 1: 헤더, 페이로드, 점으로 구분된 서명으로 구성된 JWT 직렬화 형식 이러한 요소의 인코딩된 콘텐츠는 OAuthV2 정책을 구성하는 방법에 따라 달라집니다. 정책에서는 서명 알고리즘과 같은 매개변수와 제목 및 이름과 같은 페이로드 요소를 지정합니다. 예를 들어 헤더는 헤더는 JWT에 서명하는 데 사용된 알고리즘을 나타내는 페이로드페이로드는 항목에 대한 클레임으로 구성됩니다. 일부 클레임은 정책 구성에서 제공해야 하며 다른 클레임은 Apigee 런타임에서 자동으로 생성됩니다. 이 정책은 다음 클레임을 지원합니다.
서명서명은 인코딩된 헤더, 페이로드, 보안 비밀/비공개 키, 알고리즘을 사용하여 생성됩니다. 서명은 토큰의 콘텐츠가 조작되지 않았음을 확인하는 데 사용됩니다. JWT 형식 OAuth 2.0 액세스 토큰에 대한 자세한 내용은 IETF RFC 9068: OAuth 2.0 액세스 토큰용 JSON 웹 토큰(JWT) 프로필을 참조하세요. 기본 요건이 문서에서는 OAuthV2 정책을 사용하여 OAuthV2 액세스 토큰을 생성하고 확인하는 방법을 이해하고 있다고 가정합니다. JWT 작업 또는 비공개 문자열 토큰을 만드는 기존 작업을 사용하는지에 관계없이 OAuthV2 정책의 기본적인 사용은 동일합니다. 지원되는 모든 OAuthV2 부여 유형과 함께 JWT 액세스 토큰을 사용할 수 있습니다. OAuth 2.0 소개도 참조하세요. 생성 중 다음 예시에서는 OAuthV2 정책에서 이러한 작업을 사용하는 방법을 보여줍니다. 이 예시에서는 HMAC 알고리즘으로 서명된 JWT 형식 토큰 생성 HMAC(HS256/HS384/HS512) 알고리즘 중 하나로 <OAuthV2 name="generate-policy"> <Operation>GenerateJWTAccessToken</Operation> <SupportedGrantTypes> <GrantType>client_credentials</GrantType> </SupportedGrantTypes> <GenerateResponse enabled="true"/> <Algorithm>HS512</Algorithm> <SecretKey> <Value ref="private.mysecretkey"/> </SecretKey> <ExpiresIn ref="kvm.oauth.expires_in">3600000</ExpiresIn> </OAuthV2> RSA 알고리즘으로 서명된 JWT 형식 토큰 생성 <OAuthV2 name="generate-policy"> <Operation>GenerateJWTAccessToken</Operation> <SupportedGrantTypes> <GrantType>client_credentials</GrantType> </SupportedGrantTypes> <GenerateResponse enabled="true"/> <Algorithm>RS256</Algorithm> <PrivateKey> <Value ref="private.rsa-privatekey-1"/> </PrivateKey> <ExpiresIn ref="kvm.oauth.expires_in">3600000</ExpiresIn> </OAuthV2> 암시적 부여 유형으로 JWT 형식 토큰 생성 <OAuthV2 name="generate-policy"> <Operation>GenerateJWTAccessTokenImplicitGrant</Operation> <GenerateResponse enabled="true"/> <Algorithm>RS256</Algorithm> <PrivateKey> <Value ref="private.rsa-privatekey-1"/> </PrivateKey> <ExpiresIn ref="kvm.oauth.expires_in">3600000</ExpiresIn> </OAuthV2> 확인 중 HMAC 알고리즘으로 서명된 JWT 액세스 토큰 확인 다음 예시에서는 HS512 알고리즘으로 서명된 JWT 토큰을 확인하도록 OAuthV2 정책을 구성하는 방법을 보여줍니다. HMAC
알고리즘으로 <OAuthV2 name="OAuthV2-verify-jwt"> <Operation>VerifyJWTAccessToken</Operation> <Algorithm>HS512</Algorithm> <SecretKey> <Value ref="private.mysecretkey"/> </SecretKey> </OAuthV2> RSA 알고리즘으로 서명된 JWT 액세스 토큰 확인 다음 예시에서는 RS512 알고리즘으로 서명된 JWT 토큰을 확인하도록 OAuthV2 정책을 구성하는 방법을 보여줍니다. RSA 알고리즘으로 <OAuthV2 name="OAuthV2-verify-jwt"> <Operation>VerifyJWTAccessToken</Operation> <Algorithm>RS512</Algorithm> <PublicKey> <Value ref="propertyset.non-secrets.rsa-publickey-1"/> </PublicKey> </OAuthV2> 갱신 중 HMAC 서명된 액세스 토큰 갱신 다음 정책 샘플은 HMAC 알고리즘으로 서명된 JWT
토큰을 갱신하도록 OAuthV2 정책을 구성하는 방법을 보여줍니다. 이 경우에는 갱신 작업의 응답은 새로 생성된 토큰의 응답과 유사합니다. 갱신 작업은 업데이트된 만료 시간이 있는 새 JWT 토큰을 생성하며 다른 클레임은 동일하게 유지합니다. <OAuthV2 name="RefreshAccessToken"> <Operation>RefreshJWTAccessToken</Operation> <GenerateResponse enabled="true"/> <Algorithm>HS512</Algorithm> <SecretKey> <Value ref="private.mysecretkey"/> </SecretKey> <RefreshTokenExpiresIn ref="kvm.oauth.expires_in">3600000</RefreshTokenExpiresIn> </OAuthV2> RSA 서명된 JWT 액세스 토큰 갱신다음 정책 샘플은 RSA 알고리즘으로 서명된 JWT 토큰을 갱신하도록 OAuthV2 정책을 구성하는 방법을 보여줍니다. 액세스 토큰 갱신도 참조하세요. <OAuthV2 name="RefreshAccessToken"> <Operation>RefreshJWTAccessToken</Operation> <GenerateResponse enabled="true"/> <Algorithm>RS256</Algorithm> <PrivateKey> <Value ref="private.rsa-privatekey-1"/> </PrivateKey> <RefreshTokenExpiresIn ref="kvm.oauth.expires_in">3600000</RefreshTokenExpiresIn> </OAuthV2> 샘플 토큰 응답 생성 및 갱신 작업 모두 응답 본문은 다음 예시와 유사합니다. { "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6ImF0K0pXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c", "token_type": "Bearer", "developer.email": "", "token_type": "Bearer", "issued_at": "1658352381404", "expires_in": 1799, "refresh_token": "rVSmm3QaNa0xBVFbUISz1NZI15akvgLJ", "refresh_token_issued_at": "1658352381404", "refresh_token_expires_in": 86399, "refresh_token_status": "Approved", "refresh_count": "0", "organization_name": "cerruti", "api_product_list_json": [ "TestingProduct" ] } 필수 정책 요소 요약다음 표에서는 앞의 예시에 사용된 JWT 관련 요소를 설명합니다.
지원되지 않는 정책 요소다음 OAuthV2 정책 요소는 JWT 토큰 구성에서 지원되지 않습니다.
사용 참고사항
|