메인 콘텐츠로 건너뛰기

개요

Casdoor is a UI-first Identity Access Management (IAM) / Single-Sign-On (SSO) platform with a web UI that supports OAuth 2.0, OIDC, SAML, CAS, LDAP, SCIM, WebAuthn, TOTP, MFA, RADIUS, Google Workspace, Active Directory, and Kerberos.

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

Casdoor 기능

  1. Casdoor follows a frontend-backend separation architecture and is developed in Golang. It supports high concurrency, provides a web-based UI for management, and supports localization in over 10 languages.

  2. Casdoor supports third-party application login options, such as GitHub, Google, QQ, and WeChat, and supports extending third-party login capabilities with plugins.

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

  4. Casdoor provides phone verification codes, email verification codes, and password retrieval functionality.

  5. Casdoor supports auditing and recording of access logs.

  6. Casdoor integrates with Alibaba Cloud, Tencent Cloud, and Qiniu Cloud for image CDN and cloud storage.

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

  8. Casdoor supports integration with existing systems through database synchronization, enabling a smooth transition to Casdoor.

  9. Casdoor supports mainstream databases such as MySQL, PostgreSQL, and SQL Server, and supports extending to new databases with plugins.

작동 방식

원칙

단계 0 (사전 지식)

  1. Casdoor는 OAuth 2.0 프로토콜에 기반한 인증 과정을 따릅니다. We highly recommend gaining a brief understanding of how OAuth 2.0 works. 이 소개를 참조하여 OAuth 2.0에 대해 알아볼 수 있습니다.

이미지

단계 1 (인증 요청)

귀하의 애플리케이션(웹사이트 또는 다른 애플리케이션일 수 있음)은 다음 형식의 URL을 구성해야 합니다: endpoint/login/oauth/authorize?client_id=xxx&response_type=code&redirect_uri=xxx&scope=read&state=xxx. Replace endpoint with your Casdoor host URL and xxx with your own information.

힌트

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

  • For client_id: you can find this under each individual Application.

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

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

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

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

단계 2 (인증 부여)

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

The user opens the URL and provides credentials to Casdoor. Casdoor will say: "Looking good ~ this is the user (who is authorizing the Application to receive the code and state) I know in my database, and I will send the code and state back to the Application using the callback URL (redirect_uri)".

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

Casdoor는 또한 제3자 로그인을 제공합니다. 이 경우, 자격 증명 입력 페이지 대신 제3자 제공자 목록을 볼 수 있습니다. You can log in to your app using these providers, with Casdoor acting as middleware.

단계 3 (인증 부여)

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

단계 4 (액세스 토큰)

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

단계 5 (액세스 토큰)

이 단계에서, 애플리케이션은 말합니다: "좋아! I just got the fresh 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