메인 콘텐츠로 건너뛰기

개요

Casdoor는 OAuth 2.0, OIDC, SAML, CAS, LDAP, SCIM, WebAuthn, TOTP, MFA, RADIUS, Google Workspace, Active Directory 및 Kerberos를 지원하는 웹 UI가 있는 UI 중심의 Identity Access Management (IAM) / Single-Sign-On (SSO) 플랫폼입니다.

Casdoor는 웹 UI와 애플리케이션 사용자의 로그인 요청을 모두 처리합니다.

Casdoor 기능

  1. Casdoor는 Golang으로 개발된 프론트엔드와 백엔드 분리 아키텍처를 따릅니다. 고동시성을 지원하며, 관리를 위한 웹 기반 UI를 제공하고, 10개 이상의 언어로 지역화를 지원합니다.

  2. Casdoor는 GitHub, Google, QQ, WeChat 등의 서드파티 애플리케이션 로그인을 지원하며, 플러그인으로 서드파티 로그인을 확장하는 것을 지원합니다.

  3. Casdoor는 Casbin 기반의 권한 관리를 지원합니다. ACL, RBAC, ABAC, RESTful 접근 제어 모델을 지원합니다.

  4. Casdoor는 전화 인증 코드, 이메일 인증 코드, 비밀번호 찾기 기능을 제공합니다.

  5. Casdoor는 접근 로그의 감사 및 기록을 지원합니다.

  6. Casdoor는 알리바바 클라우드, 텐센트 클라우드, Qiniu 클라우드 이미지 CDN 클라우드 저장소와 통합합니다.

  7. Casdoor는 등록, 로그인, 비밀번호 찾기 페이지의 사용자 정의를 허용합니다.

  8. Casdoor는 데이터베이스 동기화를 통해 기존 시스템과의 통합을 지원하여 Casdoor로의 원활한 전환을 가능하게 합니다.

  9. Casdoor는 MySQL, PostgreSQL, SQL Server와 같은 주요 데이터베이스를 지원하며, 플러그인으로 새로운 데이터베이스의 확장을 지원합니다.

작동 방식

원칙

단계 0 (사전 지식)

  1. Casdoor는 OAuth 2.0 프로토콜에 기반한 인증 과정을 따릅니다. OAuth 2.0이 어떻게 작동하는지 대략적으로 이해하는 것이 매우 권장됩니다. 이 소개를 참조하여 OAuth 2.0에 대해 알아볼 수 있습니다.

이미지

단계 1 (인증 요청)

귀하의 애플리케이션(웹사이트 또는 다른 애플리케이션일 수 있음)은 다음 형식의 URL을 구성해야 합니다: endpoint/login/oauth/authorize?client_id=xxx&response_type=code&redirect_uri=xxx&scope=read&state=xxx. endpoint를 귀하의 Casdoor 호스트 URL로, xxx를 귀하의 정보로 바꿉니다.

힌트

xxx 부분은 어떻게 작성하나요?

  • client_id에 대해: 이는 각 개별 애플리케이션 아래에서 찾을 수 있습니다

  • redirect_uri에 대해: 이는 귀하의 애플리케이션의 콜백 URL로 설정해야 합니다. Casdoor는 이 정보를 사용하여 인증 후 응답을 다시 보냅니다.

  • state에 대해: 이것을 애플리케이션 이름으로 작성해야 합니다.

애플리케이션은 사용자에게 다음과 같이 요청합니다: "헤이, 나는 일부 리소스가 필요하고 이 리소스에 접근할 권한이 필요해. 이 URL로 가서 사용자 이름과 비밀번호를 입력해 줄 수 있을까?"

올바르게 구성된 URL로, 애플리케이션은 사용자가 이 URL로 요청을 보내게 하고, Authorization Request가 완료됩니다.

단계 2 (인증 부여)

이 단계는 간단합니다: 사용자는 1단계에서 구성된 URL로 리디렉션되고, 사용자는 Casdoor의 로그인 페이지를 볼 것입니다. 로그인 페이지에 올바른 사용자 이름과 자격 증명을 입력함으로써, Casdoor는 이제 사용자의 신원을 알게 되고, 1단계에서 설정한 콜백 URL로 codestate라는 두 가지 정보를 보내려고 합니다.

사용자는 URL을 열고 자격 증명을 Casdoor에 제공합니다. Casdoor는 말합니다: "좋아 보이네 ~ 이 사용자는 내 데이터베이스에 있는 사용자입니다(애플리케이션에 codestate를 얻도록 승인하는 사용자), 그리고 나는 콜백 URL(redirect_uri)을 사용하여 codestate를 애플리케이션으로 돌려보낼 것입니다."

이 두 가지 정보가 애플리케이션으로 전송되면, 애플리케이션에 권한이 부여되고, Authorization Grant가 완료됩니다.

Casdoor는 또한 제3자 로그인을 제공합니다. 이 경우, 자격 증명 입력 페이지 대신 제3자 제공자 목록을 볼 수 있습니다. 이러한 제공자를 사용하여 앱에 로그인할 수 있으며, Casdoor는 중간 계층(미들웨어) 역할을 합니다.

단계 3 (인증 부여)

이 단계에서, 애플리케이션은 이미 2단계에서 코드를 가지고 있으며, Casdoor에게 말합니다: "헤이, 사용자가 code를 제공하는 것에 동의했어. code를 확인하고 access_token을 제공할 수 있을까?"

단계 4 (액세스 토큰)

Casdoor는 애플리케이션에게 응답합니다: "알아봤는데, 이 code는 정당해 보여. 당신이 올바른 애플리케이션일 것이야. 여기 access_token이 있어."code로, Casdoor는 2단계에서 올바른 사용자에 의해 승인된 애플리케이션(나중에 더 많은 리소스에 접근하는 데 사용될 access_token을 얻으려고 시도하는)임을 확인합니다.

단계 5 (액세스 토큰)

이 단계에서, 애플리케이션은 말합니다: "좋아! 나는 방금 새롭고 맛있는 access_token을 받았어. 이제 이것을 사용하여 Resource Server에서 더 가치 있는 것에 접근할 수 있어!"

그런 다음 애플리케이션은 Resource Server에게 돌아가서 말합니다: "헤이 친구, 이 access_token을 확인해 볼 수 있을까? 나는 Casdoor로부터 받았어. 이것이 Casdoor에게 발행한 올바른 토큰인지 확인하고 싶어?"

단계 6 (보호된 리소스)

Resource Server는 애플리케이션에게 응답합니다: "나쁘지 않아. 이것은 내가 Casdoor에게 발행한 것과 같아 보이고, Casdoor는 이 access_token을 가진 사람이 이 Protected Resources에 접근할 수 있다고 말했어. 그러니 가져가!"

그리고 그것이 기본적으로 Casdoor가 애플리케이션과 어떻게 작동하는지입니다.

힌트

Casdoor는 Authorization ServerResource Server 둘 다 역할을 할 수 있습니다. 다시 말해, Casdoor는 애플리케이션에 리소스에 접근할 권한을 부여하며, 일반적으로 현재 로그인된 사용자의 정보를 Casdoor의 데이터베이스에서 가져옵니다.

온라인 데모

Casdoor

여기에는 Casbin이 배포한 온라인 데모가 있습니다.

글로벌 관리자 로그인:

  • 사용자 이름: admin
  • 비밀번호: 123

Casbin-OA

Casbin-OA는 Casbin 웹 앱 중 하나입니다. 이것은 Casdoor를 인증에 사용합니다.

Casnode

Casnode는 Casbin 커뮤니티에서 개발한 공식 포럼입니다.

Casdoor를 인증 플랫폼으로 사용하고 회원을 관리합니다.

아키텍처

Casdoor는 두 부분으로 구성됩니다:

이름설명언어소스 코드
프론트엔드Casdoor를 위한 웹 프론트엔드 UIJavaScript + Reacthttps://github.com/casdoor/casdoor/tree/master/web
백엔드Casdoor를 위한 RESTful API 백엔드Golang + Beego + SQLhttps://github.com/casdoor/casdoor