OIDC 제공자를 사용하여 HTTP Bearer 인증 구성
네이티브 앱, 모바일 앱, PWA(프로그레시브 웹앱) 및 SPA(단일 페이지 앱)와 같은 클라이언트 애플리케이션은 OIDC 제공자에서 획득한 서명된 JWT 액세스 토큰으로 HTTP bearer 인증을 사용하여 Domino 서버에 인증할 수 있습니다.
Bearer 토큰을 사용하는 이유
SAML 기반 SSO를 쉽게 수행할 수 없는 클라이언트 애플리케이션은 대신 OIDC(OpenID Connect) 제공자를 사용하여 최종 사용자를 인증할 수 있습니다. OAuth 2.0 및 OIDC 용어에서 Domino 서버는 OAuth 클라이언트가 아닌 신뢰 당사자 역할을 하며 액세스 토큰을 소비합니다. HTTP Bearer 인증은 HTTP 레벨에서 작동하여 HTTP 기본 인증과 유사하면서도 더 안전하지만 HTTPS를 통해서만 사용할 수 있습니다.
Domino 12.0.2에서는 IdP 카탈로그(idpcat.nsf) 데이터베이스에서 신뢰할 수 있는 OIDC 제공자를 구성할 수 있습니다. 각 인터넷 사이트를 다른 OIDC 제공자를 사용하여 구성할 수 있습니다. 개별 인터넷 사이트에 대해서는 SAML IdP 또는 OIDC 제공자를 하나만 구성할 수 있습니다.
각 OIDC 제공자는 OpenID.Core 및 OpenID.Discovery에 따라 well-known/openid-configuration 엔드포인트 및 jwks_uri 엔드포인트를 노출해야 하므로 Domino가 해당 OIDC 제공자가 발행한 JWT를 암호화 검증하는 데 사용되는 공개 키를 동적으로 가져올 수 있습니다.
HTTP Bearer 인증에 사용되는 JWT 액세스 토큰에 대한 요구사항
- 이 기능은 RFC 6750에 정의된 "권한 부여: Bearer <token>" 흐름을 사용합니다.
- JWT는 OpenID.Core 및 OpenID.Discovery에 따라 well-known/openid-configuration 및 jwks_uri 엔드포인트를 노출하는 OIDC 제공자가 생성해야 합니다.
- 이 기능은 OpenID.Core에 따른 보안상의 이유로 TLS 연결을 통해서만 사용할 수 있습니다.
- JWT는 RS256, RS384, RS512, ES256, ES384, ES512 또는 Ed25519나 Ed448을 사용하는 EdDSA로 서명되어야 합니다. "없음" 및 HS256은 매우 안전하지 않으며 RFC 8725에 따라 HTTP Bearer 인증에서 지원되지 않습니다.
- JWT는 Domino가 Domino 디렉토리에서 고유하게 찾을 수 있는 최종 사용자의 이름 또는 이메일 주소의 형식을 포함해야 합니다. OIDC_CUSTOM_EMAIL_CLAIM_NAME notes.ini 변수가 설정된 경우 Domino는 먼저 해당하는 지정된 이름의 클레임이 있는지 확인합니다. 사용자 정의 클레임 이름이 구성되지 않았거나 클레임을 찾을 수 없는 경우 Domino는 다음으로 표준 "이메일" 클레임을 확인하고 마지막으로 "upn" 클레임을 확인합니다.
- JWT는 OIDC 공급자의 well-known/openid-configuration 엔드포인트에서 반환된 "발행자"와 일치하는 "iss"(발행자) 클레임을 포함해야 합니다.
- JWT는 OIDC 제공자의 jwks_uri 엔드포인트에서 반환된 JWK 중 하나와 일치하는 "kid"(keyID) 헤더 클레임을 포함해야 합니다.
- JWT는 "Domino.user.all"을 포함하는 "범위" 클레임을 포함해야 합니다.
- JWT의 "aud"(대상) 클레임 중 하나는 https://ultraviolet.example.com과 같은 Domino 인터넷 사이트의 호스트 이름과 일치해야 합니다.
- JWT는 토큰이 과거에 발행되었고 나중에 만료된다는 "iat"(발행 시점) 및 "만료"(만료) 클레임을 포함해야 합니다.
- 신뢰할 수 있는 제한된 애플리케이션 집합에 발행된 JWT만 허용하려면(client_id별) 허용된 client_id 수를 포함하도록 HTTP_BEARER_ALLOWED_ID_COUNT notes.ini를 구성한 다음 HTTP_BEARER_ALLOWED_CLIENT_ID_1=<first client_id>, HTTP_BEARER_ALLOWED_CLIENT_ID_2=<second client_id> 등을 구성합니다. 0개가 아닌 허용된 client_id 집합을 구성한 경우 해당 client_id 중 하나를 "azp" 클레임에서 찾아야만 JWT가 유효합니다.
제한사항
- OIDC 제공자 문서의 "로깅 레벨" 필드는 무시됩니다.
- 지원되는 범위는 인증된 최종 사용자로 전체 액세스 권한을 부여하는 "Domino.user.all"뿐입니다.
- 암호화된 JWT는 지원되지 않습니다.
- HTTP Bearer 인증은 Windows 및 Linux 서버에서만 지원됩니다.