

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# OIDC 제공업체를 ID 풀 IdP로 설정
<a name="open-id"></a>

[OpenID Connect](http://openid.net/connect/)는 여러 로그인 공급자가 지원하는 인증에 대한 개방형 표준입니다. Amazon Cognito를 사용하면 [AWS Identity and Access Management](https://aws.amazon.com/iam/)를 통해 구성하는 OpenID Connect 제공업체와 자격 증명을 연결할 수 있습니다.

**OpenID Connect 공급자 추가**

*OpenID Connect 공급자를 생성하는 방법에 대한 자세한 내용은 AWS Identity and Access Management  사용 설명서*의 [OIDC(OpenID Connect) ID 제공업체 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/identity-providers-oidc.html)을 참조하세요.

**Amazon Cognito와 공급자 연결**

**OIDC ID 제공업체(idP)를 생성하려면**

1. [Amazon Cognito 콘솔](https://console.aws.amazon.com/cognito/home)에서 **자격 증명 풀**을 선택합니다. 자격 증명 풀을 선택합니다.

1. **사용자 액세스** 탭을 선택합니다.

1. **ID 제공업체 추가**를 선택합니다.

1. **OpenId Connect(OIDC)**를 선택합니다.

1.  AWS 계정의 IAM IdP에서 **OIDC ID 제공업체**를 선택합니다. 새 SAML 공급자를 추가하려면 **새 공급자 생성**을 선택하여 IAM 콘솔로 이동합니다.

1. Amazon Cognito가 이 공급자를 통해 인증된 사용자에게 보안 인증을 발급할 때 요청하는 역할을 설정하려면 **역할 설정**을 구성하세요.

   1. **인증된 역할**을 구성할 때 설정한 **기본 역할**을 이 IdP의 사용자에게 할당하거나 **규칙을 사용하여 역할 선택**을 선택할 수 있습니다.

     1. **규칙을 사용하여 역할 선택**을 선택한 경우 사용자 인증의 소스 **클레임**, 클레임을 비교할 **연산자**, 이 역할 선택과 일치하도록 하는 **값** 및 **역할 할당**이 일치할 때 할당할 **역할**을 입력합니다. 다른 조건에 따라 추가 규칙을 생성하려면 **다른 항목 추가**를 선택합니다.

     1. **역할 해결**을 선택합니다. 사용자의 클레임이 규칙과 일치하지 않는 경우 보안 인증을 거부하거나 **인증된 역할**의 보안 인증을 발급할 수 있습니다.

1. Amazon Cognito가 이 공급자를 통해 인증한 사용자에게 보안 인증을 발급할 때 할당하는 보안 주체 태그를 변경하려면 **액세스 제어를 위한 속성**을 구성합니다.

   1. 보안 주체 태그를 적용하지 않으려면 **비활성**을 선택합니다.

   1. `sub` 및 `aud` 클레임 기반 보안 주체 태그를 적용하려면 **기본 매핑 사용**을 선택합니다.

   1. 보안 주체 태그에 대한 속성의 자체 사용자 지정 스키마를 생성하려면 **사용자 지정 매핑 사용**을 선택합니다. 그런 다음 태그에 표시하려는 각 **클레임**에서 소싱하려는 **태그 키**를 입력합니다.

1. **변경 사항 저장**을 선택합니다.

여러 OpenID Connect 공급자를 단일 자격 증명 풀에 연결할 수 있습니다.

**OpenID Connect 사용**

로그인하고 ID 토큰을 받는 방법은 공급자 설명서를 참조하세요.

토큰을 받은 후에는 토큰을 로그인 맵에 추가합니다. 공급자의 URI를 키로 사용합니다.

**OpenID Connect 토큰 검증**

Amazon Cognito와 처음 통합할 때 `InvalidToken` 예외가 발생할 수 있습니다. Amazon Cognito가 OpenID Connect(OIDC) 토큰을 검증하는 방법을 이해해야 합니다.

**참고**  
여기([https://tools.ietf.org/html/rfc7523](https://tools.ietf.org/html/rfc7523))에 명시된 바와 같이 Amazon Cognito는 시스템 간의 클럭 스큐를 처리하는 5분의 유예 기간을 제공합니다.

1. `iss` 파라미터가 로그인 맵에 사용된 키(예: login.provider.com)와 일치해야 합니다.

1. 서명이 유효해야 합니다. RSA 퍼블릭 키를 통해 서명을 확인할 수 있어야 합니다.
**참고**  
ID 풀은 짧은 기간 동안 OIDC IdP 서명 키의 캐시를 유지합니다. 제공업체가 서명 키를 변경하면 Amazon Cognito는 이 캐시가 새로 고칠 때까지 `NoKeyFound` 오류를 반환할 수 있습니다. 이 오류가 발생하면 ID 풀이 서명 키를 새로 고칠 때까지 약 10분 정도 기다립니다.

1. 인증서 퍼블릭 키의 지문은 OIDC 공급자를 생성할 때 IAM에서 설정한 지문과 일치합니다.

1. `azp` 파라미터가 있으면 이 값을 OIDC 공급자에서 나열된 클라이언트 ID와 비교하여 확인합니다.

1. `azp` 파라미터가 없으면 `aud` 파라미터를 OpenId Connect 공급자에서 나열된 클라이언트 ID와 비교하여 확인합니다.

[jwt.io](http://jwt.io/) 웹 사이트는 토큰을 디코딩하고 이러한 값을 확인하는 데 사용할 수 있는 중요한 리소스입니다.

## Android
<a name="set-up-open-id-1.android"></a>

```
Map<String, String> logins = new HashMap<String, String>();
logins.put("login.provider.com", token);
credentialsProvider.setLogins(logins);
```

## iOS - Objective-C
<a name="set-up-open-id-1.ios-objc"></a>

```
credentialsProvider.logins = @{ "login.provider.com": token }
```

## JavaScript
<a name="set-up-open-id-1.javascript"></a>

```
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
 IdentityPoolId: 'IDENTITY_POOL_ID',
 Logins: {
    'login.provider.com': token
 }
});
```