Перейти к основному содержанию

Пользовательский OAuth

заметка

Casdoor поддерживает пользовательские провайдеры. Однако пользовательские провайдеры должны следовать стандартному процессу трехстороннего OAuth, и возвращаемые значения Token URL и UserInfo URL должны соответствовать формату, указанному Casdoor.

Чтобы создать нового пользовательского провайдера, перейдите на страницу провайдера в Casdoor и выберите "Пользовательский" в поле Тип. Затем вам нужно будет заполнить Client ID, Client Secret, Auth URL, Scope,Token URL, UserInfo URL и Favicon.

image-20220418100744005

  • 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 вместе с другими сторонними провайдерами входа.