Pular para o conteúdo principal

OAuth Personalizado

nota

O Casdoor suporta provedores personalizados. No entanto, os provedores personalizados devem seguir o processo padrão do OAuth de 3 pernas, e os valores de retorno de Token URL e UserInfo URL devem estar de acordo com o formato especificado pelo Casdoor.

Overview

Custom OAuth providers allow you to integrate any OAuth 2.0 compliant authentication service with Casdoor, even if it's not officially supported. This is useful when you want to integrate with:

  • Internal enterprise OAuth servers
  • Self-hosted authentication systems
  • Third-party services not yet officially supported by Casdoor

Multiple Custom Providers Support

Casdoor supports up to 10 different custom OAuth providers simultaneously. When creating custom providers, you can choose from the following types:

  • Custom - The first custom provider
  • Custom2 through Custom10 - Additional custom providers

This allows you to integrate multiple custom OAuth services without conflicts. Each custom provider maintains its own separate configuration and user data fields.

Creating a Custom Provider

To create a new custom provider, navigate to the provider page of Casdoor, and select one of the custom types ("Custom", "Custom2", "Custom3", etc.) in the Type field. Você então precisará preencher Client ID, Client Secret, Auth URL, Scope,Token URL, UserInfo URL e Favicon.

image-20220418100744005

  • Auth URL é o endereço da página de login OAuth do provedor personalizado.

    Se você preencher https://door.casdoor.com/login/oauth/authorize como o Auth URL, então, quando um usuário fizer login com este provedor personalizado, o navegador primeiro redirecionará para

    https://door.casdoor.com/login/oauth/authorize?client_id={ClientID}&redirect_uri=https://{your-casdoor-hostname}/callback&state={State_generated_by_Casdoor}&response_type=code&scope={Scope}` 

    Após a autorização ser concluída, o provedor personalizado deve redirecionar para

    https://{your-casdoor-hostname}/callback?code={code}

    Após esta etapa, o Casdoor reconhecerá o parâmetro de código na URL.

  • Scope é o parâmetro de escopo carregado ao acessar o Auth URL, e você deve preenchê-lo conforme os requisitos do provedor personalizado.

  • Token URL é o ponto de extremidade da API para obter o accessToken.

    Uma vez que você obtenha o código na etapa anterior, o Casdoor deve usá-lo para obter o accessToken.

    Se você preencher https://door.casdoor.com/api/login/oauth/access_token como o Token URL, então o Casdoor acessará usando o seguinte comando

    curl -X POST -u "{ClientID}:{ClientSecret}" --data-binary "code={code}&grant_type=authorization_code&redirect_uri=https://{your-casdoor-hostname}/callback" https://door.casdoor.com/api/login/oauth/access_token

    O provedor personalizado deve retornar pelo menos as seguintes informações:

    {
    "access_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6Ixxxxxxxxxxxxxx",
    "refresh_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6xxxxxxxxxxxxxx",
    "token_type": "Bearer",
    "expires_in": 10080,
    "scope": "openid profile email"
    }
  • UserInfo URL é o ponto de extremidade da API para obter informações do usuário via accessToken.

    Se você preencher https://door.casdoor.com/api/userinfo como o UserInfo URL, então o Casdoor acessará usando o seguinte comando

    curl -X GET -H "Authorization: Bearer {accessToken}" https://door.casdoor.com/api/userinfo

    O provedor personalizado deve retornar pelo menos as seguintes informações:

    {
    "name": "admin",
    "preferred_username": "Admin",
    "email": "admin@example.com",
    "picture": "https://casbin.org/img/casbin.svg"
    }
  • Favicon é a URL do logotipo de um provedor personalizado.

    Este logotipo será exibido na página de login do Casdoor junto com outros provedores de login de terceiros.