]> BookStack Code Mirror - website/blob - content/docs/admin/third-party-auth.md
Update filesystem-permissions.md
[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 #### Automatic Registration
27
28 You may find that you'd like to auto-register users, from the login screen, when they use a social authentication option. To do this add the following `.env` option, altering the `{SERVICE}` to match the login service you are using:
29
30 ```bash
31 {SERVICE}_AUTO_REGISTER=true
32
33 # Examples
34 GOOGLE_AUTO_REGISTER=true
35 TWITCH_AUTO_REGISTER=true
36 ```
37
38 This will allow registration using these services even if registrations are disabled.
39 It also allows registration if using LDAP as your main authentication option.
40
41 #### Automatic Email Confirmation
42
43 If you trust a third-party login service you can enable automatic email confirmation. This skips the 'Confirm Email' setting, even if domain restrictions are enabled although the domain of the email address provided by the social service will still be checked. To do this add the following `.env` option, altering the `{SERVICE}` to match the login service you are using and trust:
44
45 ```bash
46 {SERVICE}_AUTO_CONFIRM_EMAIL=true
47
48 # Examples
49 GOOGLE_AUTO_CONFIRM_EMAIL=true
50 TWITCH_AUTO_CONFIRM_EMAIL=true
51 ```
52
53 ---
54
55 ### Google
56
57 1. Open the [Google Developers Console](https://console.developers.google.com/).
58 2. Create a new project (May have to wait a short while for it to be created).
59 3. In 'Credentials' choose the 'OAuth consent screen' tab and enter a product name ('BookStack' or your custom set name).
60 4. Back in the 'Credentials' tab click 'New credentials' > 'OAuth client ID'.
61 5. 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:
62     - `https://example.com/login/service/google/callback`
63     - `https://example.com/register/service/google/callback`
64 6. Add or set the following items in your `.env` file like so:
65 ```bash
66 # Replace the below (including '{}' braces) with your Google API_KEY and API_SECRET
67 GOOGLE_APP_ID={google_app_id}
68 GOOGLE_APP_SECRET={google_app_secret}
69
70 # APP_URL Needs to be set to your BookStack base url
71 APP_URL=http://mybookstackurl.com
72 ```
73 7. 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.
74
75 ---
76
77 ### GitHub
78
79 1. While logged in, open up your [GitHub developer applications](https://github.com/settings/developers).
80 2. Click 'Register new application'.
81 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'.
82 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.
83 5. Set the 'APP_URL' environment variable to be the same domain as you entered in step 3.
84 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.
85
86 ---
87
88 ### Twitter
89
90 Before creating a Twitter application for signing in, you will need to have signed up and be approved on the [Twitter Developer](https://developer.twitter.com/) site. Part of this will require describing your use of the API. 
91
92 1. Go to your [Twitter Developer Portal](https://developer.twitter.com/en/portal/dashboard), after being approved by twitter as described above. Navigate to 'Projects and Apps' > 'Overview'  and under 'Standalone Apps' click 'Create App'.
93 2. Enter an application name and save/continue to the next step.
94 3. You'll now be shown some keys and tokens. Copy out the shown 'API key' and 'API secret key' values for the next step.
95 4. Within your BookStack `.env` add in extra options for your token and secret like so:
96 ```bash
97 # Replace the below (including '{}' braces) with your twitter API_KEY and API_SECRET
98 TWITTER_APP_ID={API_KEY}
99 TWITTER_APP_SECRET={API_SECRET}
100
101 # APP_URL Needs to be set to your BookStack base url
102 APP_URL=http://mybookstackurl.com
103 ```
104 5. Back within the Twitter developer dashboard, find your new standalone app and click on 'App Settings'  then click on edit within the 'Authentication settings' section.
105 6. Enable the '3-legged OAuth' and 'Request email address from users' options.
106 7. Enter the following URLs under 'Callback URLs', changing `https://example.com` to your own domain where BookStack is hosted:
107     - `https://example.com/login/service/twitter/callback`
108     - `https://example.com/register/service/twitter/callback`
109 8. Fill in any remaining required URLs then click save.
110 9. 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. You may want to review the other options for the Twitter Standalone app such as setting a logo and description.
111
112 ---
113
114 ### Facebook
115
116 1. Navigate to the [Facebook developers page](https://developers.facebook.com) then go 'My Apps' -> 'Add a New App'.
117 2. Enter an app name ('BookStack login' or something custom) and contact email then continue.
118 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.
119 4. Enter the your base BookStack url into the 'Site URL' box and save.
120 5. On the left sidebar again go to 'Facebook Login' -> 'Settings'.
121 6. Enter the following URLs under 'Valid OAuth Redirect URIs', changing `https://example.com` to your own domain where BookStack is hosted:
122     - `https://example.com/login/service/facebook/callback`
123     - `https://example.com/register/service/facebook/callback`
124 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:
125 ```bash
126 # Replace the below (including '{}' braces) with your facebook APP_KEY and APP_SECRET
127 FACEBOOK_APP_ID={APP_KEY}
128 FACEBOOK_APP_SECRET={APP_SECRET}
129
130 # APP_URL Needs to be set to your BookStack base url
131 APP_URL=http://mybookstackurl.com
132 ```
133 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.
134
135 ---
136
137 ### Slack
138
139 1. Go to the [Slack apps page](https://api.slack.com/apps) and select 'Create New App'.
140 2. Enter an app name ('BookStack login' or something custom), select your team then continue.
141 3. You should see your client ID and secret. Copy these details and add them as new variables in your `.env` file like so:
142 ```bash
143 # Replace the below (including '{}' braces) with your slack CLIENT_ID and CLIENT_SECRET
144 SLACK_APP_ID={CLIENT_ID}
145 SLACK_APP_SECRET={CLIENT_SECRET}
146
147 # APP_URL Needs to be set to your BookStack base url
148 APP_URL=http://mybookstackurl.com
149 ```
150 4. In your slack app go to 'OAuth & Permissions' and enter your BookStack base URL into the 'Redirect URL(s)' input then save.
151 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.
152
153 ---
154
155 ### AzureAD (Microsoft)
156
157 1. Login to your your azure portal and navigate to the 'Azure Activity Directory' area.
158 2. Under 'Manage > App registrations' select 'New application registration'.
159 3. Enter a name ('BookStack'). Set the 'Redirect URI' to the "Web" platform with the value set to the following, replacing 'https://example.com/' with your base BookStack url: 
160     - `https://example.com/login/service/azure/callback`
161 4. Once created, View the application 'Overview' page and note the 'Application (client) ID' and 'Directory (tenant) ID' values. These are the APP_ID and TENANT values for step 9.
162 5. Within your application in azure, Navigate to 'Certificates & secrets' then choose 'New client secret'.
163 6. Enter any description you want and set an expiry duration. Then click 'Save'.
164 7. Copy the string of characters under 'Value'. This is the APP_SECRET value for step 9 and is only shown once.
165 8. Navigate to 'API permissions' for your app. You should already have a "Microsoft Graph" > "User.Read" permission assigned. If not choose 'Add a permission'. Find the 'Microsoft Graph' option within this, then select 'Delegated permissions' then find & select the 'User.Read' permission. Then select 'Add permissions' at the bottom of the page.
166 9. Copy these details and add them as new variables in your `.env` file like so:
167 ```bash
168 # Replace the below (including '{}' braces) with your azure APP_ID and APP_SECRET and TENANT
169 AZURE_APP_ID={APP_ID}
170 AZURE_APP_SECRET={APP_SECRET}
171 AZURE_TENANT={TENANT}
172
173 # APP_URL Needs to be set to your BookStack base url, likely already configured
174 APP_URL=http://mybookstackurl.com
175 ```
176 10. All done! Users should now be able to link their AzureAD account in their account profile pages and also register/login using their AzureAD account.
177
178 ---
179
180 ### Okta
181
182 1. Login to Okta and, once logged in, Note the current URL. This is used for the 'BASE_URL' in step 6.
183 2. Navigate to the Admin panel then 'Applications' then select 'Add Application'. Then select 'Create New App' on the left.
184 3. For the 'Platform' choose 'Web'. For the 'Sign on method' choose 'OpenID Connect' then click 'Create'.
185 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:
186     - `https://example.com/login/service/okta/callback`
187     - `https://example.com/register/service/okta/callback`
188 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.
189 6. Copy these details and add them as new variables in your `.env` file like so:
190 ```bash
191 # Replace the below (including '{}' braces) with your okta APP_ID and APP_SECRET and BASE_URL.
192 OKTA_APP_ID={APP_ID}
193 OKTA_APP_SECRET={APP_SECRET}
194 # The base URL is the URL from step 1 but with everything after the domain (okta.com) removed.
195 OKTA_BASE_URL={BASE_URL}
196
197 # APP_URL Needs to be set to your BookStack base url
198 APP_URL=http://mybookstackurl.com
199 ```
200 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.
201
202 ---
203
204 ### GitLab
205
206 GitLab authentication works for both [gitlab.com](https://gitlab.com) and self-hosted GitLab instances.
207
208 1. Login to GitLab and go to your user settings.
209 2. In the left sidebar select 'Applications'.
210 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:
211     - `https://example.com/login/service/gitlab/callback`
212     - `https://example.com/register/service/gitlab/callback`
213 4. Select the checkbox for the `read_user` scope.
214 5. Press 'Save application'. You will be shown the application ID and secret which you'll need for the next step.  
215 6. Copy the below details and add them as new variables in your `.env` file like so:
216 ```bash
217 # Replace the below (including '{}' braces) with your GitLab Application Id and Secret values.
218 GITLAB_APP_ID={APP_ID}
219 GITLAB_APP_SECRET={APP_SECRET}
220
221 # APP_URL Needs to be set to your BookStack base url
222 APP_URL=http://mybookstackurl.com
223
224
225 # ONLY REQURED FOR SELF-HOSTED GITLAB INSTANCES - REMOVE FOR GITLAB.COM
226 # The below needs to match the base URI of your GitLab install, including the trailing slash.
227 GITLAB_BASE_URI=http://my-custom-gitlab.example.com/
228 ```
229 7. All set up! Users will now be able to use GitLab to sign-in and register.
230
231 ---
232
233 ### Twitch
234
235 To allow twich sign-in you'll first need to create an application from the Twitch developer site. Here's the process:
236
237 1. Login into the [Twitch developer website](https://dev.twitch.tv/).
238 2. Navigate to your 'Dashboard' then ['Apps'](https://dev.twitch.tv/dashboard/apps) and select 'Register Your Application'.
239 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:
240     - `https://example.com/login/service/twitch/callback`
241 4. Under the 'Application Category' option select 'Website Integration' then hit 'Register'.
242 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.
243 6. Copy the below details and add them as new variables in your `.env` file like so:
244 ```bash
245 # Replace the below (including '{}' braces) with your Twitch Application Id and Secret values.
246 TWITCH_APP_ID={APP_ID}
247 TWITCH_APP_SECRET={APP_SECRET}
248
249 # APP_URL Needs to be set to your BookStack base url
250 APP_URL=http://mybookstackurl.com
251 ```
252 7. All set up! Users will now be able to use Twitch to sign-in and register.
253
254 ---
255
256 ### Discord
257
258 To allow Discord sign-in you'll first need to create an application on the Discord developer site. Here's the process:
259
260 1. Login into the [Discord developer website](https://discordapp.com/developers/applications/me).
261 2. Select 'Create an application'.
262 3. Set a name to identify the application, such as 'BookStack Authentication', and save.
263 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:
264     - `https://example.com/login/service/discord/callback`
265 5. Back in the 'General Information' section find the 'Client ID' and 'Client Secret' values which you'll use in the next step.
266 6. Copy the below details and add them as new variables in your `.env` file like so:
267 ```bash
268 # Replace the below (including '{}' braces) with your Discord Application Id and Secret values.
269 DISCORD_APP_ID={APP_ID}
270 DISCORD_APP_SECRET={APP_SECRET}
271
272 # APP_URL Needs to be set to your BookStack base url
273 APP_URL=http://mybookstackurl.com
274 ```
275 7. All set up! Users will now be able to use Discord to sign-in and register.