Apigee 및 Apigee Hybrid 문서입니다.
Apigee Edge 문서 보기
Apigee는 OAuth 2.0 토큰 기반 인증을 구현하여 API를 보호할 수 있는 도구 및 정책을 제공합니다. IETF RFC 6749에 설명된 OAuth2는 API 인증 및 승인을 위해 가장 널리 지원되는 개방형 표준입니다. 클라이언트 애플리케이션이 API 구현에 전송하는 표준 형식 사용자 인증 정보로 토큰을 설정합니다. API 구현은 토큰을 확인하여 클라이언트가 API에 액세스할 권한이 있는지 확인할 수 있습니다.
Apigee를 사용하면 개발자는 OAuthv2 정책을 사용하는 4가지 OAuth2 부여 유형인 클라이언트 사용자 인증 정보, 비밀번호, 암시적 인증 및 인증 코드 중 한 가지를 구현하여 액세스 토큰이나 갱신 토큰을 생성할 수 있습니다. 또한 API 개발자는 Apigee를 사용하여 IETF RFC 8693에 설명된 대로 토큰 교환 패턴에 따른 권한을 비롯한 맞춤 권한을 구현할 수 있습니다. 그러면 클라이언트 애플리케이션은 액세스 토큰을 사용하여 보안 API를 소비합니다. 각 액세스 토큰에는 고유한 만료 시간이 있으며, 이는 OAuthv2 정책에서 설정할 수 있습니다.
Apigee는 일부 부여 유형에서 액세스 토큰과 함께 갱신 토큰을 생성하고 반환할 수 있습니다. 클라이언트는 원래 액세스 토큰이 취소되거나 만료된 후 갱신 토큰을 사용하여 새 액세스 토큰을 가져옵니다. 갱신 토큰의 만료 시간은 OAuthv2 정책에서도 설정할 수 있습니다.
안티패턴
OAuthv2 정책에서 액세스 토큰 또는 갱신 토큰의 만료 시간을 길게 설정하면 토큰 유출 시 취약점 노출 기간이 길어지므로 보안 위험이 발생합니다. 또한 영구 저장소에 OAuth 토큰이 누적되어 시간이 지남에 따라 성능이 저하될 수 있습니다.
예 1
다음 OAuthV2 정책 예시는 10일이라는 긴 만료 시간이 지정된 액세스 토큰을 보여줍니다.
<OAuthV2 name="OAuth-GenerateAccessToken"> <Operation>GenerateAccessToken</Operation> <ExpiresIn>864000000</ExpiresIn> <!-- 10 days --> <RefreshTokenExpiresIn>864000000</RefreshTokenExpiresIn> <!-- 10 days --> <SupportedGrantTypes> <GrantType>authorization_code</GrantType> </SupportedGrantTypes> <GenerateResponse enabled="true"/> </OAuthV2>
위의 예에서
- 액세스 토큰 수명은 10일로 설정됩니다.
- 갱신 토큰의 전체 기간도 10일로 설정됩니다.
영향
장기 액세스 토큰은 보안 위험을 나타냅니다. 토큰이 유출되거나 손실되면 단기 토큰은 자연스럽게 만료되어 더 이상 사용할 수 없게 되지만 장기 토큰은 잠재적으로 장기간 API에 대한 액세스 권한을 계속 부여하여 취약점 노출 기간을 늘립니다.
액세스 토큰의 수명은 짧아야 하며, 약 30분 이하여야 하고, 새로고침 토큰의 수명보다 훨씬 짧아야 합니다.
예 2
다음 OAuthV2 정책 예시는 200일이라는 긴 만료 시간이 지정된 갱신 토큰을 보여줍니다.
<OAuthV2 name="OAuth-GenerateAccessToken"> <Operation>GenerateAccessToken</Operation> <ExpiresIn>1800000</ExpiresIn> <!-- 30 minutes --> <RefreshTokenExpiresIn>17280000000</RefreshTokenExpiresIn> <!-- 200 days --> <SupportedGrantTypes> <GrantType>authorization_code</GrantType> </SupportedGrantTypes> <GenerateResponse enabled="true"/> </OAuthV2>
위의 예에서
- 액세스 토큰은 합리적이고 짧은 만료 시간인 30분으로 설정되어 있습니다.
- 갱신 토큰의 만료 시간은 매우 긴 200일로 설정되었습니다.
- 이 API에 대한 트래픽이 초당 10개 요청이면 하루에 최대 864,000개의 토큰을 생성할 수 있습니다.
- 갱신 토큰은 200일 후에 만료되며 전체 기간 동안 데이터 저장소에 누적됩니다.
영향
새로고침 토큰의 전체 기간을 연장하면 데이터 저장소에 많은 토큰이 누적되므로 시간이 지남에 따라 성능이 저하될 수 있습니다. Apigee Hybrid에서는 과도한 토큰 누적으로 인해 지속성 레이어의 디스크 공간이 부족해질 수도 있습니다.
권장사항
특정 보안 요구사항에 적합한 OAuth 액세스 및 갱신 토큰의 만료 시간을 사용하여 유출된 토큰의 취약점 노출 시간을 줄이고 데이터 저장소에 토큰이 누적되지 않도록 합니다. 액세스 토큰 전체 기간의 시작점으로는 30분이 적합하며, 갱신 토큰 전체 기간의 시작점으로는 24시간을 사용하세요.
갱신 토큰의 만료 시간을 액세스 토큰의 전체 기간의 배수로 설정합니다. 예를 들어 액세스 토큰에 대해 30분을 설정한 후 갱신 토큰의 전체 기간을 24시간 또는 7일 또는 지원해야 하는 사용자 환경에 적합한 값으로 설정합니다.