| # OAuth2 Basic Connector |
| > OAuth2 Basic Connector is a generic OAuth plug-in designed to support any of the OAuth login functions. |
| > For example: Google, GitHub, Facebook, Twitter, etc. |
| |
| ## How to use |
| ```bash |
| ./answer build --with github.com/apache/answer-plugins/connector-basic |
| ``` |
| |
| ## How to config |
| > The following configuration items are in the plugin tab of the admin pag. |
| |
| - Name: Name of your connector which will be shown in the login page |
| - ClientID: Client ID of your application |
| - ClientSecret: Client secret of your application |
| - Authorize URL: Authorize URL of your application |
| - Token URL: Token URL of your application |
| - User JSON URL: Get user info from this URL |
| - User ID JSON Path: Path in the OAuth2 User JSON to the user id. eg: user.id |
| - User Display Name JSON Path: Path in the OAuth2 User JSON to the user display name. eg: user.name |
| - User Username JSON Path: Path in the OAuth2 User JSON to the user username. eg: user.login |
| - User Email JSON Path: Path in the OAuth2 User JSON to the user email. eg: user.email |
| - User Avatar JSON Path: Path in the OAuth2 User JSON to the user avatar. eg: user.avatar_url |
| - Check Email Verified: If set to true, the email will be verified by email_verified_json_path. If not, the email is always believed to have been verified. |
| - Email Verified JSON Path: Path in the OAuth2 User JSON to the email verified. eg: user.email_verified |
| - Scope: OAuth Scope of your application. Multiple scopes separated by `,` e.g. user.email,user.age |
| - Logo SVG: SVG of your application logo which format is base64 |
| |
| You need to configure the **redirect URI** in a third-party platform, such as google oauth, such as: |
| https://example.com/answer/api/v1/connector/redirect/basic |
| |
| ## GitHub OAuth Configuration Example |
| > The following list is not mentioned can be configured according to your actual situation, not required. |
| |
| - Name: `GitHub` |
| - Client ID: `8cb9dxxxxxc24de9` |
| - Client Secret: `9a3e055xxxxxxxxxxxxxxxxxxxxxxxxxxb78978bc` |
| - Authorize URL: `https://github.com/login/oauth/authorize` |
| - Token URL: `https://github.com/login/oauth/access_token` |
| - User Json Url: `https://api.github.com/user` |
| - User ID Json Path: `id` |
| - User Display Name Json Path: `login` |
| - User Username Json Path: `name` |
| - User Email Json Path: `email` |
| - User Avatar Json Path: `avatar_url` |
| |
| In the [https://github.com/settings/applications/new](https://github.com/settings/applications/new) page, |
| config the `Authorization callback URL` as `https://example.com/answer/api/v1/connector/redirect/basic` |
| |
| ## Google OAuth Configuration Example |
| |
| - Name: `Google` |
| - Client ID: `xxx.apps.googleusercontent.com` |
| - Client Secret: `GOCSPX-xxx-xxxx` |
| - Authorize URL: `https://accounts.google.com/o/oauth2/auth` |
| - Token URL: `https://oauth2.googleapis.com/token` |
| - User Json Url: `https://www.googleapis.com/oauth2/v3/userinfo` |
| - User ID Json Path: `sub` |
| - User Display Name Json Path: `name` |
| - User Username Json Path: `name` |
| - User Email Json Path: `email` |
| - User Avatar Json Path: `picture` |
| - Email Verified Json Path: `email_verified` |
| - Scope: `https://www.googleapis.com/auth/userinfo.email,https://www.googleapis.com/auth/userinfo.profile,openid` |
| |
| In the [https://console.developers.google.com/apis/credentials](https://console.developers.google.com/apis/credentials) page, config the `Authorized redirect URIs` as `https://example.com/answer/api/v1/connector/redirect/basic` |
| |
| ## Discord OAuth Configuration Example |
| |
| - Name: `Discord` |
| - Client ID: `1126xxx` |
| - Client Secret: `NfmIMMcxxx` |
| - Authorize URL: `https://discord.com/oauth2/authorize` |
| - Token URL: `https://discord.com/api/oauth2/token` |
| - User Json Url: `https://discord.com/api/users/@me` |
| - User ID Json Path: `id` |
| - User Display Name Json Path: `username` |
| - User Username Json Path: `username` |
| - User Email Json Path: `email` |
| - User Avatar Json Path: `avatar` |
| - Scope: `email,identify` |
| |
| In the [https://discord.com/developers/applications](https://discord.com/developers/applications) page, config the `Redirects` as `https://example.com/answer/api/v1/connector/redirect/basic` |
| |
| ## Okta Workforce Identity Cloud (WIC) OAuth Configuration Example |
| |
| - Name: `Okta` |
| - Client ID: `0oa666666` |
| - Client Secret: `UGqYGya5GJ4E` |
| - Authorize URL: `https://example.okta.com/oauth2/v1/authorize` |
| - Token URL: `https://example.okta.com/oauth2/v1/token` |
| - User Json Url: `https://example.okta.com/oauth2/v1/userinfo` |
| - User ID Json Path: `sub` |
| - User Display Name Json Path: `name` |
| - User Username Json Path: `email` |
| - User Email Json Path: `email` |
| - Email Verified JSON Path: `email_verified` |
| - Scope: `openid,email,groups` |
| |
| In the Okta Application setup; config the `Sign-in redirect URIs` as `https://example.com/answer/api/v1/connector/redirect/basic` and the `Initiate login URI` as `https://example.com/answer/api/v1/connector/login/basic` |
| In the `Admin \ General` in `Answers` ensure that the `Site URL` matches the page adddress as above (`https://example.com/answer`) or `Okta` will return a `4xx` error. |