Пользовательский OAuth
Casdoor поддерживает пользовательские провайдеры. Однако пользовательские провайдеры должны следовать стандартному процессу трехстороннего OAuth, и возвращаемые значения Token URL
и UserInfo URL
должны соответствовать формату, указанному Casdoor.
Чтобы создать нового пользовательского провайдера, перейдите на страницу провайдера в Casdoor и выберите "Пользовательский" в поле Тип. Затем вам нужно будет заполнить Client ID
, Client Secret
, Auth URL
, Scope
,Token URL
, UserInfo URL
и Favicon
.
Auth URL
- это адрес страницы входа OAuth пользовательского провайдера.Если вы заполните
https://door.casdoor.com/login/oauth/authorize
какAuth URL
, то когда пользователь войдет с помощью этого пользовательского провайдера, браузер сначала перенаправит на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}`
После завершения авторизации пользовательский провайдер должен перенаправить на
https://{your-casdoor-hostname}/callback?code={code}
После этого шага Casdoor распознает параметр code в URL.
Scope
- это параметр области, передаваемый при доступе кAuth URL
, и вы должны заполнить его в соответствии с требованиями пользовательского провайдера.Token URL
- это API-конечная точка для получения accessToken.После получения кода на предыдущем шаге, Casdoor должен использовать его для получения accessToken.
Если вы заполните
https://door.casdoor.com/api/login/oauth/access_token
какToken URL
, то Casdoor будет обращаться к нему с помощью следующей команды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
Пользовательский провайдер должен возвращать как минимум следующую информацию:
{
"access_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6Ixxxxxxxxxxxxxx",
"refresh_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6xxxxxxxxxxxxxx",
"token_type": "Bearer",
"expires_in": 10080,
"scope": "openid profile email"
}UserInfo URL
- это API-конечная точка для получения информации о пользователе через accessToken.Если вы заполните
https://door.casdoor.com/api/userinfo
какUserInfo URL
, то Casdoor будет обращаться к нему с помощью следующей командыcurl -X GET -H "Authorization: Bearer {accessToken}" https://door.casdoor.com/api/userinfo
Пользовательский провайдер должен возвращать как минимум следующую информацию:
{
"name": "admin",
"preferred_username": "Admin",
"email": "admin@example.com",
"picture": "https://casbin.org/img/casbin.svg"
}Favicon
- это URL логотипа пользовательского провайдера.Этот логотип будет отображаться на странице входа Casdoor вместе с другими сторонними провайдерами входа.