SSO 설정
SSO 설정
이 가이드는 회사의 ID 공급자(IdP)를 InterMIND에 연결하는 IT 관리자를 위한 것입니다. 설정 후, 멤버는 일반 로그인 페이지에서 로그인합니다: Sign in with SSO → 업무 이메일 → 귀사의 IdP → InterMIND로 복귀.
사용 가능 플랜: Business 및 Enterprise 플랜 구성 담당자: 팀 소유자 또는 관리자 프로토콜: OpenID Connect (OIDC). SAML 2.0 로그인은 개발 중입니다 — SAML 구성은 저장되지만 아직 로그인에는 사용할 수 없습니다.
사전 요건
- 확인된 도메인 — 먼저 DNS TXT 레코드를 통해 이메일 도메인을 확인하세요(Domain Management 참조). SSO 로그인은 팀이 확인한 이메일 도메인의 계정만 허용하며, 이것이 테넌트 경계입니다.
- OIDC with discovery를 지원하는 IdP — Issuer URL 아래에
/.well-known/openid-configuration을 제공해야 합니다. Okta, Microsoft Entra ID, Google 모두 지원합니다.
IdP에 등록할 항목
IdP에서 OIDC Web Application을 다음과 같이 생성하세요:
| 설정 | 값 |
|---|---|
| Redirect URI (콜백) | 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 | 등록한 앱에서 가져온 값 |
클라이언트 시크릿은 저장 시 암호화되며 저장 후에는 브라우저로 반환되지 않습니다.
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 — 시크릿 Value를 즉시 복사하세요
- Client ID = Overview 페이지의 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 계정으로 로그인하고 팀에 자동으로 참여합니다. (명시적인 클라이언트 자격 증명을 선호하는 경우 issuer https://accounts.google.com로 Google을 일반 OIDC 공급자로 연결할 수도 있습니다.)
연결 테스트
- 비공개/시크릿 창에서 로그인 페이지를 여세요
- Sign in with SSO를 클릭하고 확인된 도메인의 업무 이메일을 입력하세요
- IdP로 리디렉션되며, 인증 후 InterMIND에 로그인된 상태로 돌아옵니다
- 해당 로그인은 팀 감사 로그(Users 페이지에서 내보내기 가능)에 메서드
sso와 함께auth.login으로 기록됩니다
문제 해결
| 증상 | 원인 |
|---|---|
| 이메일 입력 후 "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 | 저장된 구성이 SAML입니다 — SAML 로그인은 아직 사용할 수 없습니다 |
SSO IdP discovery failed | Issuer URL이 잘못되었거나 /.well-known/openid-configuration을 제공하지 않습니다 |
| "login session expired, start again" | 로그인 시작과 IdP 콜백 사이에 5분 이상이 경과했습니다 |
| IdP가 리디렉션한 후 로그인 거부됨 | IdP가 확인된 도메인 외부의 이메일을 반환했거나, email 클레임이 전혀 없습니다 (Entra: 선택적 email 클레임을 추가하세요) |
보안 속성
보안 설문지용: SSO 흐름은 PKCE (S256), state, nonce를 사용하는 Authorization Code 방식입니다; ID 토큰의 서명은 IdP의 JWKS에 대해 검증되며, issuer와 audience도 함께 검증됩니다; IdP는 DNS로 확인된 도메인에 한해서만 권한을 가집니다 — 다른 이메일에 대한 어설션은 결코 세션을 생성하지 않습니다; OIDC 클라이언트 시크릿은 저장 시 암호화됩니다; 모든 SSO 로그인은 팀 감사 로그에 기록됩니다. 플랜, 도메인, 구성 게이트는 로그인 시작 및 콜백 양쪽에서 서버 측으로 적용됩니다.