Перейти до основного вмісту

Користувацький OAuth

примітка

Casdoor підтримує користувацькі провайдери. Однак, користувацькі провайдери повинні слідувати стандартному процесу 3-стороннього OAuth, і повернені значення Token URL та UserInfo URL повинні відповідати формату, визначеному Casdoor.

Щоб створити новий користувацький провайдер, перейдіть на сторінку провайдера Casdoor та виберіть "Custom" у полі Тип. Потім вам потрібно буде заповнити 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 разом з іншими сторонніми провайдерами входу.