SSO 설정
SSO 설정
본 가이드는 회사의 자격 증명 공급자(IdP)를 InterMIND에 연결하는 IT 관리자를 위한 것입니다. 설정 완료 후, 구성원은 일반 로그인 페이지에서 다음과 같이 로그인합니다: SSO로 로그인 → 업무 이메일 → IdP → InterMIND로 다시 돌아옴. 비기술적 개요는 Single Sign-On 기능 페이지를 참조하십시오.
제공 플랜: Business 및 Enterprise 플랜 구성 권한: 팀 소유자 또는 관리자 프로토콜: OpenID Connect (OIDC) 전용. SAML 2.0은 제공되지 않습니다 — Okta, Microsoft Entra ID 및 Google Workspace는 모두 OIDC를 지원합니다.

사전 요구 사항
- 확인된 도메인 — 먼저 DNS TXT 레코드를 통해 이메일 도메인을 확인하십시오 (도메인 관리 참조). SSO 로그인은 팀이 확인한 이메일 도메인을 가진 계정만 허용하며, 이것이 테넌트 경계입니다.
- Discovery가 포함된 OIDC를 지원하는 IdP — Issuer URL 아래에
/.well-known/openid-configuration을 제공해야 합니다. Okta, Microsoft Entra ID, Google 모두 지원합니다.
IdP에 등록할 항목
IdP에서 다음 설정으로 OIDC Web Application을 생성하십시오:
| 설정 | 값 |
|---|---|
| Redirect URI (callback) | https://intermind.com/api/auth/sso/callback — OIDC를 선택한 후 SSO 카드에도 표시됨 |
| Grant type | Authorization Code (PKCE S256이 자동으로 사용됨) |
| Scopes | openid email profile |
IdP가 발급하는 ID 토큰에는 사용자의 email이 포함되어야 하며, 이메일 도메인은 확인된 도메인 중 하나여야 합니다 — 그렇지 않으면 로그인이 거부됩니다.
그런 다음 Integrations 페이지의 SSO 카드를 작성하십시오:
| 필드 | 붙여넣을 항목 |
|---|---|
| Display Name | 구성원이 인식할 수 있는 아무 레이블 |
| Issuer URL | IdP의 issuer — /.well-known/openid-configuration을 제공하는 URL |
| Authorization URL | 해당 discovery 문서의 authorization_endpoint |
| Client ID / Client Secret | 등록한 앱에서 가져온 값 |
Client Secret는 저장 시 암호화되며, 저장 후 브라우저로 다시 반환되지 않습니다.
Okta
- 관리 콘솔 → Applications → Create App Integration → 로그인 방식 OIDC, 애플리케이션 유형 Web Application
- Sign-in redirect URI:
https://intermind.com/api/auth/sso/callback - 액세스 권한을 가질 사용자 또는 그룹을 할당합니다.
- Client ID 및 Client Secret을 복사합니다.
- InterMIND에서: Issuer URL = Okta 조직 URL (예:
https://acme.okta.com, 또는 사용 중인 경우https://acme.okta.com/oauth2/default와 같은 인증 서버의 issuer); Authorization URL =<issuer>/.well-known/openid-configuration의authorization_endpoint
Microsoft Entra ID (Azure AD)
- Entra 관리 센터 → App registrations → New registration
- 플랫폼 Web, redirect URI
https://intermind.com/api/auth/sso/callback - Certificates & secrets → New client secret — secret Value를 즉시 복사합니다.
- Client ID = 개요 페이지의 Application (client) ID
- ID 토큰에 사용자의 이메일이 포함되어 있는지 확인합니다: Token configuration → Add optional claim → ID → email
- InterMIND에서: Issuer URL =
https://login.microsoftonline.com/<tenant-id>/v2.0; Authorization URL =https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/authorize
Google Workspace
앱 등록이 필요하지 않습니다. SSO 카드에서 Google Workspace 제공자 유형을 선택하고 저장하십시오 — 확인된 도메인의 구성원은 Google 계정으로 로그인하여 자동으로 팀에 참여합니다. (명시적인 클라이언트 자격 증명을 선호하는 경우 발급자 https://accounts.google.com을 사용하는 일반 OIDC 제공자로 Google을 연결할 수도 있습니다.)
연결 테스트
- 비공개/시크릿 창에서 로그인 페이지를 엽니다.
- SSO로 로그인을 클릭하고 확인된 도메인의 업무 이메일을 입력합니다.
- IdP로 리디렉션됩니다; 인증 후 InterMIND로 다시 돌아와 로그인됩니다.
- 로그인은
sso방식과 함께auth.login으로 팀 감사 로그(Users 페이지에서 내보낼 수 있음)에 기록됩니다.
문제 해결
| 증상 | 원인 |
|---|---|
| 이메일 입력 후 "SSO is not configured"가 표시됨 | 해당 이메일 도메인과 일치하는 활성화된 SSO 구성이 없음 — 도메인이 확인되었고 SSO 카드가 저장되었는지 확인 |
SSO login is not available: plan | 팀의 플랜에 더 이상 SSO가 포함되지 않음 |
SSO login is not available: domain-not-verified | 도메인이 여전히 DNS 확인 대기 중임 |
SSO login is not available: config-incomplete | Client ID 또는 Client Secret 누락 — SSO 카드를 다시 저장 |
SSO login is not available: type-unsupported | 저장된 제공자 유형이 로그인 흐름에서 구현한 유형이 아님 — SSO 구성을 삭제하고 OIDC 또는 Google Workspace로 다시 생성 |
SSO IdP discovery failed | Issuer URL이 잘못되었거나 /.well-known/openid-configuration을 제공하지 않음 |
| "login session expired, start again" | 로그인 시작과 IdP 콜백 사이에 5분 이상 경과함 |
| IdP 리디렉션 후 로그인 거부됨 | IdP가 확인된 도메인 외부의 이메일을 반환했거나, email 클레임이 전혀 없음 (Entra: 선택적 이메일 클레임 추가) |
보안 속성
보안 설문조사용: SSO 흐름은 Authorization Code와 PKCE (S256), state, nonce를 사용합니다; ID 토큰의 서명은 발급자(issuer) 및 대상자(audience)와 함께 IdP의 JWKS를 기준으로 검증됩니다; IdP는 DNS를 통해 확인된 도메인에 대해서만 권한을 갖습니다 — 다른 이메일에 대한 어설션은 세션을 생성하지 않습니다; OIDC 클라이언트 시크릿은 저장 시 암호화됩니다; 모든 SSO 로그인은 팀 감사 로그에 기록됩니다. 플랜, 도메인 및 구성 게이트는 로그인 시작과 콜백 모두에서 서버 측에 적용됩니다.