작동 방식
각 애플리케이션은 고유한 로그인 오리진과 고유한 토큰 발급자를 가집니다. 라이브 애플리케이션과 샌드박스 애플리케이션은 분리되어 있습니다. 오리진, 설정, 아이덴티티가 각각 분리되어 있습니다.
흐름은 PKCE(
S256만 해당)를 사용하는 OAuth 2.0 인가 코드 방식입니다.
- 앱이
redirect_uri,state,code_challenge,code_challenge_method=S256을 포함하여{origin}/sign-in을 엽니다. - 호스팅 페이지가 설정한 인증 방식을 사용하여 사용자를 로그인 또는 가입시키며, 필요한 2단계 인증도 포함됩니다.
- 브라우저가
code와state를 담아 사용자의redirect_uri로 돌아갑니다. - 앱이
POST {origin}/token/에서 코드를 교환하여 액세스 토큰, ID 토큰, 리프레시 토큰을 받습니다.
플랫폼 선택
JavaScript
호스팅 로그인, 콜백, 세션, 로그아웃.
React
클라이언트 상태와 보호된 애플리케이션 뷰.
Next.js
서버 세션, 콜백 라우트, 쿠키.
iOS
시스템 브라우저와 보안 토큰 저장소.
Android
브라우저 인가와 앱 콜백.
React Native
네이티브 인증 래퍼 준비.
Flutter
네이티브 인증 래퍼 준비.
애플리케이션 준비
- 애플리케이션의 인증 기능을 켜도록 Didit에 요청하십시오. 먼저 샌드박스 애플리케이션에서 테스트하십시오.
- 정확한 리디렉션 URL(최대 50개)과 런타임 API를 호출하는 브라우저용
allowed_origins(최대 50개)를 등록하십시오. - 제공하려는 로그인 방식을 활성화하십시오. Didit ID Wallet은 항상 켜져 있습니다.
- 세션 및 비밀번호 설정을 선택하십시오(아래 참조).
- 프로덕션 환경에 배포하기 전에 가입, 로그인, 비밀번호 찾기, MFA, 세션 만료, 로그아웃을 테스트하십시오.
리디렉션 URL
Didit은 사용자를 등록된 주소로만 리디렉션합니다. 콘솔의 Authentication > Security and sessions > Redirect URLs and allowed origins에서 주소를 등록하십시오. 로그인 요청의redirect_uri는 등록된 URL과 문자 단위로 정확히 일치해야 합니다. 스킴, 호스트, 포트, 경로, 쿼리가 모두 같아야 합니다.
포트가 다르거나, 끝에 슬래시가 있거나, 대소문자가 다르면 다른 주소로 취급됩니다.
와일드카드, 프래그먼트, URL에 포함된 자격 증명, 사용자 지정 스킴은 거부됩니다.
주소가 등록되어 있지 않으면 Didit은 절대 그 주소로 리디렉션하지 않습니다.
{origin}/sign-in은 무엇을 어디에 등록해야 하는지 설명하는 페이지와 함께 400을 반환하고, POST {origin}/authorize/는 400 {"error": "invalid_redirect_uri"}를 반환합니다.
로컬 개발
샌드박스 애플리케이션으로 자신의 컴퓨터에서 테스트하십시오.- 포트를 포함하여 콜백을 등록하십시오. 예:
http://localhost:3000/auth/callback. - 브라우저 코드가 런타임 API를 호출하는 경우(예:
POST {origin}/token/에서 코드 교환), Allowed origins에도 오리진을 추가하십시오. 예:http://localhost:3000. 경로와 끝 슬래시는 넣지 마십시오. pk_test_...키를 사용하여 샌드박스 오리진https://<slug>.sandbox.auth.didit.me에서 로그인을 시작하십시오.
localhost, 127.0.0.1, [::1]은 서로 다른 주소이며, 포트마다 별도의 주소입니다.
사용하는 각 주소를 모두 등록하십시오.
라이브 애플리케이션은 http://를 절대 허용하지 않습니다.
프로덕션 환경에 배포하기 전에 라이브 애플리케이션에 프로덕션 https:// 콜백을 등록하십시오.
애플리케이션 설정
이 설정은 콘솔에서 관리하거나,write:authentication 권한이 있는 승인된 콘솔 세션으로 관리합니다.
여러 제품에서 한 사람 유지하기
모든 신원에는vendor_data 값이 포함됩니다. 이 값은 사람을 가져올 때 제공한 external_id이거나, 그렇지 않은 경우 Didit 신원 ID입니다. 이 값은 액세스 토큰, ID 토큰, GET session/에 나타납니다.
인증 세션을 생성하고 거래를 제출할 때 같은 값을 vendor_data로 사용하십시오. 그러면 Authentication 이벤트가 콘솔에서 해당 사람의 인증 및 거래와 동일한 사람의 기록에 추가됩니다. 이벤트 및 webhook을 참조하십시오.
vendor_data는 검증된 토큰에서 백엔드가 도출해야 하며, 확인되지 않은 브라우저 필드에서 가져와서는 안 됩니다.
어떤 조합이든 공통 연동 프롬프트를 사용하십시오. 로그인 시 실행되는 정책은 봇 방지를 읽어 보십시오.