안티패턴: OAuth 토큰에 만료 시간 설정 안 함

<ph type="x-smartling-placeholder"></ph> 현재 Apigee Edge 문서를 보고 있습니다.
Apigee X 문서.
정보

Apigee Edge는 다음을 위한 OAuth 2.0 프레임워크를 제공합니다. 보호 API를 제공합니다 OAuth2는 가장 널리 사용되는 개방형 표준 토큰 기반 인증 및 승인 체계 중 하나입니다. OAuth2를 사용하면 클라이언트 애플리케이션은 사용자가 사용자 이름 및 비밀번호를 증명하지 않아도 사용자를 대신하여 API에 액세스할 수 있습니다.

Apigee Edge를 사용하면 개발자가 네 가지 OAuth2 부여 유형인 클라이언트 사용자 인증 정보 password, 암시적 권한 승인 코드 - OAuthv2 정책 사용 클라이언트 애플리케이션은 액세스 토큰을 사용하여 보안 API를 소비합니다. 액세스 토큰마다 만료 시간이 있습니다. 이 값은 OAuthv2 정책에서 설정할 수 있습니다.

갱신 토큰은 일부 부여 유형에서 액세스 토큰과 함께 선택적으로 발급됩니다. 갱신 토큰은 원본 액세스 토큰이 만료되거나 취소된 후 유효한 새 액세스 토큰을 얻는 데 사용됩니다. 갱신 토큰의 만료 시간은 OAuthv2 정책에서도 설정할 수 있습니다.

이 안티패턴은 긴 만료 시간을 설정하고 에 대해 자세히 알아보세요.

안티패턴

OAuthv2 정책에서 갱신 토큰의 만료 시간 설정 안함 OAuth 토큰이 누적되고 Cassandra 노드에서 디스크 공간 사용량이 증가합니다.

다음 예시는 OAuthV2 정책의 누락된 구성을 보여줍니다. <RefreshTokenExpiresIn>:

<OAuthV2 name="GenerateAccessToken">
    <Operation>GenerateAccessToken</Operation>
    <ExpiresIn>1800000</ExpiresIn> <!-- 30 minutes -->
    <!--<RefreshTokenExpiresIn> is missing -->
    <SupportedGrantTypes>
      <GrantType>password</GrantType>
    </SupportedGrantTypes>
    <GenerateResponse enabled="true"/>
</OAuthV2>

위의 예에서

  • 액세스 토큰의 만료 시간은 30분으로 비교적 짧게 설정되어 있습니다.
  • 갱신 토큰의 만료 시간이 설정되지 않았습니다.
  • 갱신 토큰이 데이터 스토어 (Cassandra)에 영구적으로 유지되어 데이터가 발생함 축적될 수 있습니다.
  • 만료 없이 발급된 갱신 토큰은 무기한으로 액세스 토큰을 생성하는 데 사용할 수 있습니다.
  • 이 API에 대한 트래픽이 초당 10개 요청이면 최대 864,000개의 토큰을 생성할 수 있습니다. 1일 후입니다.

영향

  • 갱신 토큰이 만료 없이 생성되면 다음과 같은 두 가지 주요 결과가 발생합니다. <ph type="x-smartling-placeholder">
      </ph>
    • 갱신 토큰은 향후 언제든지(수년 동안 가능) 액세스 권한을 얻는 데 사용할 수 있습니다. 토큰입니다. 이로 인해 보안에 영향을 미칠 수 있습니다.
    • 갱신 토큰이 포함된 Cassandra의 행은 절대 삭제되지 않습니다. 이로 인해 데이터가 Cassandra에 축적됩니다.
  • 갱신 토큰을 사용하지 않는 경우 대신 새 갱신 토큰과 액세스 토큰을 만들면 됩니다. 이전 갱신 토큰은 Cassandra에 유지됩니다. 따라서 토큰은 Cassandra에서 계속 축적되고 더 팽창될 것입니다. 디스크 사용량 증가, 무거운 압축이 발생하며 결국에는 읽기/쓰기가 짧은 지연 시간으로 데이터를 읽을 수 있습니다

권장사항

갱신 토큰과 액세스 토큰 모두에 대해 적절하게 짧은 만료 시간을 사용합니다. 자세한 내용은 권장사항 만료 설정을 위한 시간을 단축할 수 있습니다 두 액세스 모두의 만료 구성을 지정해야 합니다. 갱신 토큰을 사용할 수 있습니다 자세한 내용은 OauthV2 정책 문서 를 참조하세요.

프라이빗 클라우드용 Edge 고객을 위한 권장사항

이 섹션에서는 프라이빗 클라우드 고객을 위한 Edge를 위한 권장사항을 설명합니다.

기본 갱신 토큰 만료 시간 지정

기본적으로 갱신 토큰 만료가 정책 구성에 지정되지 않으면 Edge에서 만료 없이 갱신 토큰을 만듭니다. 이 동작을 재정의하려면 다음 절차를 따르세요.

  1. 메시지 프로세서 노드에서 구성 재정의 파일을 수정하거나 만듭니다. $APIGEE_ROOT/customer/application/message-processor.properties 파일이 다음과 같은지 확인하세요. apigee 사용자가 읽을 수 있습니다.
  2. 다음 줄을 파일에 추가합니다.
    conf_keymanagement_oauth_refresh_token_expiry_time_in_millis=3600000
    드림 이렇게 하면 정책에 지정되지 않은 경우 기본 갱신 토큰 만료가 1시간으로 설정됩니다. 이 기본값은 비즈니스 요구사항에 따라 변경할 수 있습니다.
  3. 메시지 프로세서 서비스를 다시 시작합니다.
    apigee-service edge-message-processor restart
  4. 모든 메시지 프로세서 노드에서 위 단계를 하나씩 반복합니다.
를 통해 개인정보처리방침을 정의할 수 있습니다. 를 통해 개인정보처리방침을 정의할 수 있습니다.

Cassandra 권장사항

공개적으로 제공되는 최신 버전의 Apigee로 업그레이드해 보세요. Apigee 계속 관리를 최적화하고 지속적으로 개선하기 위한 수정사항 및 개선사항 출시 토큰 수를 볼 수 있습니다 Apigee에서 액세스 및 갱신 토큰이 Cassandra에 저장됨 'kms' 키스페이스 내에 있어야 합니다. 이 모델의 압축 전략은 키스페이스가 LeveledCompactionStrategy로 설정됩니다. 다음 색인이 없는지 확인해야 합니다. <ph type="x-smartling-placeholder">
    </ph>
  • kms.oauth_20_access_tokens.oauth_20_access_tokens_organization_name_idx#f0f0f0 및
  • kms.oauth_20_access_tokens.oauth_20_access_tokens_status_idx

또한 kms.oauth_20_access_tokens 테이블의 gc_grace_seconds 기본 10일에서 더 짧은 기간으로 값 (예: 3일)을 설정하여 삭제 중인 토큰으로 인해 생성된 Tombstone이 더 빨리 삭제됩니다

추가 자료