GitLab
O Casdoor pode usar o protocolo OIDC para se conectar a um servidor GitLab auto-implantado, e este documento mostrará como fazer isso.
Como os documentos do GitLab afirmam, o GitLab só funciona com provedores OpenID que usam HTTPS, então você precisa implantar o Casdoor com HTTPS, como colocar o Casdoor atrás de um proxy reverso NGINX com uma configuração de certificado SSL. O próprio Casdoor só escuta na porta 8000 por padrão via HTTP e não possui funcionalidade relacionada ao HTTPS.
A seguir estão alguns dos nomes mencionados na configuração:
CASDOOR_HOSTNAME
: O nome de domínio ou IP onde o servidor Casdoor está implantado, por exemplo, https://door.casbin.com
.
GITLAB_HOSTNAME
: O nome de domínio ou IP onde o GitLab está implantado, por exemplo, https://gitlab.com
.
Passo 1: Implantar Casdoor e GitLab
Primeiramente, Casdoor e GitLab devem ser implantados.
Após uma implantação bem-sucedida, você precisa garantir:
- O Casdoor pode ser acessado e usado normalmente.
- Defina o valor de
origin
do Casdoor (conf/app.conf) paraCASDOOR_HOSTNAME
.
Passo 2: Configurar aplicação Casdoor
- Crie ou use uma aplicação Casdoor existente.
- Adicione uma URL de redirecionamento:
http://GITLAB_HOSTNAME/users/auth/openid_connect/callback
. - Adicione o provedor que deseja e complemente outras configurações.
Notavelmente, você pode obter dois valores na página de configurações da aplicação: Client ID
e Client secret
(veja a imagem acima), e nós os usaremos na próxima etapa.
Abra seu navegador favorito e visite: http://CASDOOR_HOSTNAME
/.well-known/openid-configuration, onde você verá a configuração OIDC do Casdoor.
Passo 3: Configurar GitLab
Você pode seguir os passos abaixo para configurar isso, ou fazer alterações personalizadas de acordo com este documento (por exemplo, se você está instalando o GitLab usando o código-fonte em vez do Omnibus).
No seu servidor GitLab, abra o arquivo de configuração.
sudo editor /etc/gitlab/gitlab.rb
Adicione a configuração do provedor. (A URL HOSTNAME deve incluir http ou https)
gitlab_rails['omniauth_providers'] = [
{
name: "openid_connect",
label: "Casdoor", # optional label for the login button, defaults to "Openid Connect"
args: {
name: "openid_connect",
scope: ["openid", "profile", "email"],
response_type: "code",
issuer: "<CASDOOR_HOSTNAME>",
client_auth_method: "query",
discovery: true,
uid_field: "preferred_username",
client_options: {
identifier: "<YOUR CLIENT ID>",
secret: "<YOUR CLIENT SECRET>",
redirect_uri: "<GITLAB_HOSTNAME>/users/auth/openid_connect/callback"
}
}
}
]Reinicie o seu servidor GitLab.
Cada usuário registrado pode abrir
GITLAB_HOSTNAME
/-/profile/account e conectar a conta Casdoor.Concluir. Agora, você pode fazer login no seu próprio GitLab usando Casdoor.