]> BookStack Code Mirror - website/blob - content/docs/admin/third-party-auth.md
6e521e471112e74b7e086d920ccc15e0b6223ae7
[website] / content / docs / admin / third-party-auth.md
1 +++
2 title = "Third Party Authentication"
3 description = "Enabling and configuring third-party authentication for easier logins"
4 date = "2017-01-01"
5 type = "admin-doc"
6 aliases = [
7     "/docs/admin/social-auth"
8 ]
9 +++
10
11 BookStack currently supports login via a range of third party and social applications. Once enabled options for these services will show up in the login, registration and user profile pages. By default these services are disabled. To enable them you will have to create an application on the external services to obtain the require application id's and secrets.
12
13 #### Available Services
14
15 * [Google](#google)
16 * [GitHub](#github)
17 * [Twitter](#twitter)
18 * [Facebook](#facebook)
19 * [Slack](#slack)
20 * [AzureAD (Microsoft)](#azuread-microsoft)
21 * [Okta](#okta)
22 * [GitLab](#gitlab)
23 * [Twitch](#twitch)
24 * [Discord](#discord)
25
26 ---
27
28 ### Google
29
30 1. Open the [Google Developers Console](https://console.developers.google.com/).
31 2. Create a new project (May have to wait a short while for it to be created).
32 3. Select 'Enable and manage APIs'.
33 4. Enable the 'Google+ API'.
34 5. In 'Credentials' choose the 'OAuth consent screen' tab and enter a product name ('BookStack' or your custom set name).
35 6. Back in the 'Credentials' tab click 'New credentials' > 'OAuth client ID'.
36 7. Choose an application type of 'Web application' and enter the following urls under 'Authorized redirect URIs', changing `https://example.com` to your own domain where BookStack is hosted:
37     - `https://example.com/login/service/google/callback`
38     - `https://example.com/register/service/google/callback`
39 8. Add or set the following items in your `.env` file like so:
40         ```bash
41         # Replace the below (including '{}' braces) with your Google API_KEY and API_SECRET
42         GOOGLE_APP_ID={google_app_id}
43         GOOGLE_APP_SECRET={google_app_secret}
44
45         # APP_URL Needs to be set to your BookStack base url
46         APP_URL=http://mybookstackurl.com
47         ```
48 10. All done! Users should now be able to link their social accounts in their account profile pages and also register/login using their Google accounts.
49
50 ---
51
52 ### GitHub
53
54 1. While logged in, open up your [GitHub developer applications](https://github.com/settings/developers).
55 2. Click 'Register new application'.
56 3. Enter an application name ('BookStack' or your custom set name), A link to your app instance under 'Homepage URL' and an 'Authorization callback URL' of the url that your BookStack instance is hosted on then click 'Register application'.
57 4. A 'Client ID' and a 'Client Secret' value will be shown. Add these two values to the to the `GITHUB_APP_ID` and `GITHUB_APP_SECRET` variables, replacing the default false value, in the '.env' file found in the BookStack root folder.
58 5. Set the 'APP_URL' environment variable to be the same domain as you entered in step 3.
59 6. All done! Users should now be able to link their social accounts in their account profile pages and also register/login using their Github account.
60
61 ---
62
63 ### Twitter
64
65 To create a Twitter application for signing in with you may require a phone number linked to your Twitter account.
66
67 1. Go to your [Twitter apps page](https://apps.twitter.com/) and click 'Create New App'.
68 2. Enter an application name and description. The website and callback URL can just be your BookStack homepage urls. Then submit the form.
69 3. Click into your new application and go the the settings tab and ensure 'Allow this application to be used to Sign in with Twitter' is checked.
70 4. If you'd like, set an icon and change any other details.
71 5. Click the 'Permissions' tab and in the 'Additional Permissions' section check the box 'Request email addresses from users' then save.
72 6. Go to the 'Keys and Access Tokens' tab to find your API key and secret. Add or set these to your `.env` file like so:
73         ```bash
74         # Replace the below (including '{}' braces) with your twitter API_KEY and API_SECRET
75         TWITTER_APP_ID={API_KEY}
76         TWITTER_APP_SECRET={API_SECRET}
77
78         # APP_URL Needs to be set to your BookStack base url
79         APP_URL=http://mybookstackurl.com
80         ```
81 7. All done! Users should now be able to link their Twitter account in their account profile pages and also register/login using their Twitter account.
82
83 ---
84
85 ### Facebook
86
87 1. Navigate to the [Facebook developers page](https://developers.facebook.com) then go 'My Apps' -> 'Add a New App'.
88 2. Enter an app name ('BookStack login' or something custom) and contact email then continue.
89 3. In your new app select 'Add Product' on the left sidebar then choose 'Facebook Login' by clicking the 'Get Started' button. Select the 'Web' option if asked to choose a platform.
90 4. Enter the your base BookStack url into the 'Site URL' box and save.
91 5. On the left sidebar again go to 'Facebook Login' -> 'Settings'.
92 6. Enter your base BookStack URL again into the 'Valid OAuth redirect URIs' input and save.
93 7. Navigate back to the app 'Dashboard' in the sidebar to find your app id and secret. Add or set these to your `.env` file like so:
94         ```bash
95         # Replace the below (including '{}' braces) with your facebook APP_KEY and APP_SECRET
96         FACEBOOK_APP_ID={APP_KEY}
97         FACEBOOK_APP_SECRET={APP_SECRET}
98
99         # APP_URL Needs to be set to your BookStack base url
100         APP_URL=http://mybookstackurl.com
101         ```
102 7. All done! Users should now be able to link their Facebook account in their account profile pages and also register/login using their Facebook account.
103
104 ---
105
106 ### Slack
107
108 1. Go to the [Slack apps page](https://api.slack.com/apps) and select 'Create New App'.
109 2. Enter an app name ('BookStack login' or something custom), select your team then continue.
110 3. You should see your client ID and secret. Copy these details and add them as new variables in your `.env` file like so:
111         ```bash
112         # Replace the below (including '{}' braces) with your slack CLIENT_ID and CLIENT_SECRET
113         SLACK_APP_ID={CLIENT_ID}
114         SLACK_APP_SECRET={CLIENT_SECRET}
115
116         # APP_URL Needs to be set to your BookStack base url
117         APP_URL=http://mybookstackurl.com
118         ```
119 4. In your slack app go to 'OAuth & Permissions' and enter your BookStack base URL into the 'Redirect URL(s)' input then save.
120 5. All done! Users should now be able to link their Slack account in their account profile pages and also register/login using their Slack account.
121
122 ---
123
124 ### AzureAD (Microsoft)
125
126 1. Login to your your azure portal and navigate to the 'Azure Activity Directory' area.
127 2. Under 'Manage > App registrations' select 'New application registration'.
128 3. Enter a name ('BookStack'). Keep the 'Application type' as 'Web app / API'. Set the 'Sign-on URL' to be the main URL to your BookStack instance.
129 4. Once created, Click on your new application and note the 'Application ID'. This is the APP_ID value for step 9.
130 5. Within your application in azure, Navigate to 'Keys' under 'API access'.
131 6. Enter any description you want and set a duration ('Never expires' is okay unless you specifically want it to expire). Then click 'Save'.
132 7. Copy the string of characters under 'Value'. This is the APP_SECRET value for step 9 and is only shown once.
133 8. Back under 'App registrations' click on 'Endpoints'. This will show a list of URL's that each contain a unique ID. For example, the OAuth2 token endpoint will look something like this: `https://login.microsoftonline.com/<UniqueID>/oauth2/token`. Copy out the unique ID. This is the TENANT value for step 9.
134 9. Copy these details and add them as new variables in your `.env` file like so:
135         ```bash
136         # Replace the below (including '{}' braces) with your azure APP_ID and APP_SECRET and TENANT
137         AZURE_APP_ID={APP_ID}
138         AZURE_APP_SECRET={APP_SECRET}
139         AZURE_TENANT={TENANT}
140
141         # APP_URL Needs to be set to your BookStack base url
142         APP_URL=http://mybookstackurl.com
143         ```
144 10. All done! Users should now be able to link their AzureAD account in their account profile pages and also register/login using their Slack account.
145
146 ---
147
148 ### Okta
149
150 1. Login to Okta and, once logged in, Note the current URL. This is used for the 'BASE_URL' in step 6.
151 2. Navigate to the Admin panel then 'Applications' then select 'Add Application'. Then select 'Create New App' on the left.
152 3. For the 'Platform' choose 'Web'. For the 'Sign on method' choose 'OpenID Connect' then click 'Create'.
153 4. Give the app a name such as 'BookStack' or 'Our documentation'. Under the 'Login redirect URIs' option add both of the below URLs, Changing `https://example.com` to the base URL of your BookStack instance:
154     - `https://example.com/login/service/okta/callback`
155     - `https://example.com/register/service/okta/callback`
156 5. Save and scroll down to the 'Client Credentials' area. Copy the 'Client ID' and 'Client secret' values. These are your 'APP_ID' and 'APP_SECRET' values for step 6.
157 6. Copy these details and add them as new variables in your `.env` file like so:
158         ```bash
159         # Replace the below (including '{}' braces) with your okta APP_ID and APP_SECRET and BASE_URL.
160         OKTA_APP_ID={APP_ID}
161         OKTA_APP_SECRET={APP_SECRET}
162         # The base URL is the URL from step 1 but with everything after the domain (okta.com) removed.
163         OKTA_BASE_URL={BASE_URL}
164
165         # APP_URL Needs to be set to your BookStack base url
166         APP_URL=http://mybookstackurl.com
167         ```
168 7. All set up! Remember to assign the new application you created in Okta to your Okta users otherwise they will not be able to register/login using the service.
169
170 ---
171
172 ### GitLab
173
174 GitLab authentication works for both [gitlab.com](https://gitlab.com) and self-hosted GitLab instances.
175
176 1. Login to GitLab and go to your user settings.
177 2. In the left sidebar select 'Applications'.
178 3. Set a name to identify the application, such as 'BookStack Authentication', and in the 'Redirect URI' input add both of the below URLs, Changing `https://example.com` to the base URL of your BookStack instance:
179     - `https://example.com/login/service/gitlab/callback`
180     - `https://example.com/register/service/gitlab/callback`
181 4. Do not select any of the 'Scopes' checkboxes.
182 5. Press 'Save application'. You will be shown the application ID and secret which you'll need for the next step.  
183 6. Copy the below details and add them as new variables in your `.env` file like so:
184     ```bash
185     # Replace the below (including '{}' braces) with your GitLab Application Id and Secret values.
186     GITLAB_APP_ID={APP_ID}
187     GITLAB_APP_SECRET={APP_SECRET}
188
189     # APP_URL Needs to be set to your BookStack base url
190     APP_URL=http://mybookstackurl.com
191
192
193     # ONLY REQURED FOR SELF-HOSTED GITLAB INSTANCES - REMOVE FOR GITLAB.COM
194     # Set the below URI to match the base URI of your GitLab install
195     GITLAB_BASE_URI=http://my-custom-gitlab.example.com
196     ```
197 7. All set up! Users will now be able to use GitLab to sign-in and register.
198
199 ---
200
201 ### Twitch
202
203 To allow twich sign-in you'll first need to create an application from the Twitch developer site. Here's the process:
204
205 1. Login into the [Twitch developer website](https://dev.twitch.tv/).
206 2. Navigate to your 'Dashboard' then ['Apps'](https://dev.twitch.tv/dashboard/apps) and select 'Register Your Application'.
207 3. Set a name to identify the application, such as 'BookStack Authentication', and in the 'OAuth Redirect URI' input add the below URL, Changing `https://example.com` to the base URL of your BookStack instance:
208     - `https://example.com/login/service/twitch/callback`
209 4. Under the 'Application Category' option select 'Website Integration' then hit 'Register'.
210 5. Click the 'New Secret' button and accept the prompt that appears. You should now see both a 'Client ID' and 'Client Secret' value which you'll use in the next step.
211 6. Copy the below details and add them as new variables in your `.env` file like so:
212     ```bash
213     # Replace the below (including '{}' braces) with your Twitch Application Id and Secret values.
214     TWITCH_APP_ID={APP_ID}
215     TWITCH_APP_SECRET={APP_SECRET}
216
217     # APP_URL Needs to be set to your BookStack base url
218     APP_URL=http://mybookstackurl.com
219     ```
220 7. All set up! Users will now be able to use Twitch to sign-in and register.
221
222 ---
223
224 ### Discord
225
226 To allow Discord sign-in you'll first need to create an application on the Discord developer site. Here's the process:
227
228 1. Login into the [Discord developer website](https://discordapp.com/developers/applications/me).
229 2. Select 'Create an application'.
230 3. Set a name to identify the application, such as 'BookStack Authentication', and save.
231 4. In the sidebar, Open the OAuth2 settings for your application and add a redirect. Input the below URL, Changing `https://example.com` to be the base URL of your BookStack instance then save:
232     - `https://example.com/login/service/discord/callback`
233 5. Back in the 'General Information' section find the 'Client ID' and 'Client Secret' values which you'll use in the next step.
234 6. Copy the below details and add them as new variables in your `.env` file like so:
235     ```bash
236     # Replace the below (including '{}' braces) with your Twitch Application Id and Secret values.
237     DISCORD_APP_ID={APP_ID}
238     DISCORD_APP_SECRET={APP_SECRET}
239
240     # APP_URL Needs to be set to your BookStack base url
241     APP_URL=http://mybookstackurl.com
242     ```
243 7. All set up! Users will now be able to use Discord to sign-in and register.