Benutzerdefiniertes OAuth
Casdoor unterstützt benutzerdefinierte Anbieter. Die benutzerdefinierten Anbieter müssen jedoch dem standardmäßigen 3-legged OAuth-Prozess folgen, und die Rückgabewerte von Token URL und UserInfo URL müssen dem von Casdoor festgelegten Format entsprechen.
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. Sie müssen dann Client ID, Client Secret, Auth URL, Scope,Token URL, UserInfo URL und Favicon ausfüllen.

Auth URList die Adresse der OAuth-Anmeldeseite des benutzerdefinierten Anbieters.Wenn Sie
https://door.casdoor.com/login/oauth/authorizealsAuth URLeintragen, wird der Browser zuerst zu dieser Adresse umleiten, wenn sich ein Benutzer mit diesem benutzerdefinierten Anbieter anmeldet.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}`When PKCE is enabled, Casdoor automatically appends the necessary security parameters:
&code_challenge={code_challenge}&code_challenge_method=S256Nachdem die Autorisierung abgeschlossen ist, sollte der benutzerdefinierte Anbieter umleiten zu
https://{your-casdoor-hostname}/callback?code={code}Nach diesem Schritt wird Casdoor den Code-Parameter in der URL erkennen.
Scopeist der Scope-Parameter, der beim Zugriff auf dieAuth URLübertragen wird, und Sie sollten ihn gemäß den Anforderungen des benutzerdefinierten Anbieters ausfüllen.Enable PKCEcontrols whether to use Proof Key for Code Exchange (PKCE) when authenticating with your custom provider. PKCE adds an extra security layer by proving that the client requesting the token is the same one that initiated the authorization flow. When enabled, Casdoor generates a unique cryptographic code verifier for each authentication attempt and includes the correspondingcode_challenge(SHA-256 hash of the verifier) andcode_challenge_method=S256in the authorization request. The code verifier is then sent to your provider's token endpoint during token exchange. Enable this if your OAuth provider requires or recommends PKCE.Token URList der API-Endpunkt zum Erhalten des accessToken.Sobald Sie den Code im vorherigen Schritt erhalten haben, sollte Casdoor ihn verwenden, um den accessToken zu bekommen.
Wenn Sie
https://door.casdoor.com/api/login/oauth/access_tokenalsToken URLeintragen, wird Casdoor darauf mit dem folgenden Befehl zugreifencurl -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_tokenWhen PKCE is enabled, the request includes the code verifier:
curl -X POST -u "{ClientID}:{ClientSecret}" --data-binary "code={code}&grant_type=authorization_code&redirect_uri=https://{your-casdoor-hostname}/callback&code_verifier={code_verifier}" https://door.casdoor.com/api/login/oauth/access_tokenDer benutzerdefinierte Anbieter sollte mindestens die folgenden Informationen zurückgeben:
{
"access_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6Ixxxxxxxxxxxxxx",
"refresh_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6xxxxxxxxxxxxxx",
"token_type": "Bearer",
"expires_in": 10080,
"scope": "openid profile email"
}UserInfo URList der API-Endpunkt zum Erhalten von Benutzerinformationen über den accessToken.Wenn Sie
https://door.casdoor.com/api/userinfoalsUserInfo URLeintragen, wird Casdoor darauf mit dem folgenden Befehl zugreifencurl -X GET -H "Authorization: Bearer {accessToken}" https://door.casdoor.com/api/userinfoDer benutzerdefinierte Anbieter sollte mindestens die folgenden Informationen zurückgeben:
{
"name": "admin",
"preferred_username": "Admin",
"email": "admin@example.com",
"picture": "https://casbin.org/img/casbin.svg",
"phone": "+1234567890"
}The
phonefield is optional. If provided, it will be automatically saved to the user's phone number in Casdoor.Faviconist die Logo-URL eines benutzerdefinierten Anbieters.Dieses Logo wird auf der Anmeldeseite von Casdoor zusammen mit anderen Drittanbieter-Login-Anbietern angezeigt.