Visão Geral
O Casdoor é uma plataforma de Gerenciamento de Identidade e Acesso (IAM) / Login Único (SSO) com foco em UI, com interface web que suporta OAuth 2.0, OIDC, SAML, CAS, LDAP, SCIM, WebAuthn, TOTP, MFA, RADIUS, Google Workspace, Active Directory e Kerberos.
O Casdoor serve tanto a interface de usuário web quanto as solicitações de login dos usuários do aplicativo.
Recursos do Casdoor
O Casdoor segue uma arquitetura separada de front-end e back-end, desenvolvida em Golang. Ele suporta alta concorrência, fornece uma interface de usuário baseada na web para gerenciamento e suporta localização em mais de 10 idiomas.
O Casdoor suporta login de aplicativos de terceiros, como GitHub, Google, QQ e WeChat, e suporta a extensão de login de terceiros com plugins.
O Casdoor suporta gerenciamento de autorização baseado no Casbin. Ele suporta modelos de controle de acesso ACL, RBAC, ABAC e RESTful.
O Casdoor fornece código de verificação por telefone, código de verificação por e-mail e funções de recuperação de senha.
O Casdoor suporta auditoria e gravação de logs de acesso.
O Casdoor integra-se com o armazenamento em nuvem CDN de imagens da Alibaba Cloud, Tencent Cloud e Qiniu Cloud.
O Casdoor permite a personalização das páginas de registro, login e recuperação de senha.
O Casdoor suporta integração com sistemas existentes por sincronização de banco de dados, permitindo uma transição suave para o Casdoor.
O Casdoor suporta bancos de dados mainstream como MySQL, PostgreSQL e SQL Server, e suporta a extensão de novos bancos de dados com plugins.
Como funciona
Passo 0 (Pré-conhecimento)
- O Casdoor segue o processo de autorização construído sobre o protocolo OAuth 2.0. É altamente recomendável ter um breve entendimento de como o OAuth 2.0 funciona. Você pode se referir a esta introdução ao OAuth 2.0.
Passo 1 (Solicitação de Autorização)
Sua Aplicação (que pode ser um site ou qualquer outra aplicação) deve compor uma URL no seguinte formato: endpoint/login/oauth/authorize?client_id=xxx&response_type=code&redirect_uri=xxx&scope=read&state=xxx
. Substitua endpoint
pela URL do host do seu Casdoor e xxx
pelas suas próprias informações.
Como preencher as partes xxx
?
Para
client_id
: você pode encontrar isso em cada Aplicação individualPara
redirect_uri
: você deve definir isso para a URL de callback da sua própria Aplicação. O Casdoor usará essas informações para enviar a resposta de volta após a autorização.Para
state
: você deve preencher isso com o nome da sua Aplicação.
A Aplicação solicitará ao usuário: "Ei, eu preciso de alguns recursos e preciso da sua permissão para acessar esses recursos. Você pode ir a esta URL e inserir seu nome de usuário e senha para mim?" Com a URL corretamente composta, sua Aplicação fará o usuário lançar uma solicitação para esta URL, e a Solicitação de Autorização
é concluída.
Este passo é direto: o usuário é redirecionado para a URL composta no Passo 1, e o usuário verá a página de login do Casdoor.
Passo 2 (Concessão de Autorização)
Ao inserir o nome de usuário e as credenciais corretas na página de login, o Casdoor agora conhece a identidade do usuário e está prestes a enviar duas informações de volta para a URL de callback definida no Passo 1: code
e state
. Com essas duas informações enviadas de volta para sua Aplicação, a autorização é concedida ao aplicativo, e a Concessão de Autorização
é concluída.
O usuário abre a URL e fornece as credenciais para o Casdoor. O Casdoor dirá: "Tudo certo ~ este é o usuário (que está autorizando a Aplicação a obter o code
e state
) que eu conheço no meu banco de dados, e eu enviarei o code
e state
de volta para a Aplicação usando a URL de retorno (redirect_uri
)".
O Casdoor também fornece logins de terceiros.
Neste caso, em vez de ver a página de entrada de credenciais, você verá uma lista de provedores de terceiros. Você pode fazer login no seu aplicativo usando esses provedores, com o Casdoor atuando como uma camada intermediária (middleware). Neste passo, sua Aplicação já tem o código do Passo 2, e falará com o Casdoor: "Ei, o usuário concordou em me dar o code
. Você pode verificar este code
e me dar o access_token
?"
Passo 3 (Concessão de Autorização)
O Casdoor responde à sua Aplicação: "Sabe de uma coisa, este code
parece legítimo. Você deve ser a Aplicação certa. Aqui está o access_token
para você." Com este code
, o Casdoor confirma que é uma Aplicação autorizada (autorizada pelo usuário correto no Passo 2) tentando obter o access_token
(que será usado mais tarde para acessar mais recursos). Neste passo, sua Aplicação diz: "Legal! Acabei de receber o fresco e saboroso access_token
. Agora posso usá-lo para acessar algo mais valioso do Resource Server
!"
Passo 4 (Token de Acesso)
Sua Aplicação então se volta para o Resource Server
e diz: "Ei amigo, você pode verificar este access_token
? Eu o recebi do Casdoor. Você quer verificar se este é o token correto que você emitiu para o Casdoor?" O Resource Server
responde à sua Aplicação: "Nada mal. Parece exatamente como o que eu emiti para o Casdoor, e o Casdoor diz que quem possui este access_token
pode acessar esses Protected Resources
. Então vá em frente e pegue!" E é basicamente assim que o Casdoor funciona com sua Aplicação.
Passo 5 (Token de Acesso)
O Casdoor pode atuar tanto como um Authorization Server
quanto um Resource Server
. Em outras palavras, o Casdoor autoriza sua Aplicação a acessar recursos, geralmente as informações do usuário atualmente logado, do banco de dados do Casdoor. Casbin-OA é um dos aplicativos web do Casbin.
Ele usa o Casdoor para autenticação. Casnode é o fórum oficial desenvolvido pela comunidade Casbin. Ele usa o Casdoor como plataforma de autenticação e gerencia membros.
Passo 6 (Recurso Protegido)
O Casdoor consiste em duas partes: O Casdoor dirá: "Tudo certo ~ este é o usuário (que está autorizando a Aplicação a obter o code
e state
) que eu conheço no meu banco de dados, e enviarei o code
e state
de volta para a Aplicação usando a URL de callback (redirect_uri
)". https://github.com/casdoor/casdoor/tree/master/web
https://github.com/casdoor/casdoor
O Casdoor é uma plataforma de Gerenciamento de Identidade e Acesso (IAM) / Single-Sign-On (SSO) com foco na interface de usuário web que suporta OAuth 2.0, OIDC, SAML, CAS, LDAP, SCIM, WebAuthn, TOTP, MFA, RADIUS, Google Workspace, Active Directory e Kerberos. Em outras palavras, o Casdoor autoriza sua Aplicação a acessar recursos, geralmente as informações do usuário atualmente logado, do banco de dados do Casdoor.
Demo online
Casdoor
Aqui está uma demonstração online implantada pelo Casbin.
Login do administrador global:
- Nome de usuário:
admin
- Senha:
123
Casbin-OA
O Casbin-OA é um dos aplicativos web do Casbin. Ele usa o Casdoor para autenticação.
- Casbin-OA
- Código-fonte: https://github.com/casbin/casbin-oa
Casnode
O Casnode é o fórum oficial desenvolvido pela comunidade Casbin.
Ele usa o Casdoor como plataforma de autenticação e gerencia membros.
- Casnode
- Código-fonte: https://github.com/casbin/casnode
Arquitetura
O Casdoor consiste em duas partes:
Nome | Descrição | Idioma | Código-fonte |
---|---|---|---|
Frontend | Interface de usuário web frontend para o Casdoor | JavaScript + React | https://github.com/casdoor/casdoor/tree/master/web |
Backend | API RESTful backend para o Casdoor | Golang + Beego + SQL | https://github.com/casdoor/casdoor |