website/integrations: minio: configure openid on web (#9874)
Co-authored-by: Tana M Berry <tanamarieberry@yahoo.com>
This commit is contained in:
@ -21,7 +21,7 @@ The following placeholders will be used:
|
|||||||
|
|
||||||
The primary way to manage access in MinIO is via [policies](https://min.io/docs/minio/linux/administration/identity-access-management/policy-based-access-control.html#minio-policy). We need to configure authentik to return a list of which MinIO policies should be applied to a user.
|
The primary way to manage access in MinIO is via [policies](https://min.io/docs/minio/linux/administration/identity-access-management/policy-based-access-control.html#minio-policy). We need to configure authentik to return a list of which MinIO policies should be applied to a user.
|
||||||
|
|
||||||
Under _Customization_ -> _Property Mappings_, create a _Scope Mapping_. Give it a name like "OIDC-Scope-minio". Set the scope name to `minio` and the expression to the following
|
Create a Scope Mapping: in the authentik Admin interface, navigate to **Customization -> Property Mappings**, click **Create**, and then select **Scope Mapping**. Give the property mapping a name like "OIDC-Scope-minio". Set the scope name to `minio` and the **Expression** to the following:
|
||||||
|
|
||||||
```python
|
```python
|
||||||
return {
|
return {
|
||||||
@ -29,7 +29,7 @@ return {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
This mapping will result in the default MinIO `readwrite` policy being applied to all users. If you want to create a more granular mapping based on authentik groups, use an expression like this
|
This mapping applies the default MinIO `readwrite` policy to all users. If you want to create a more granular mapping based on authentik groups, use an expression like this:
|
||||||
|
|
||||||
```python
|
```python
|
||||||
if ak_is_group_member(request.user, name="Minio admins"):
|
if ak_is_group_member(request.user, name="Minio admins"):
|
||||||
@ -47,22 +47,45 @@ Note that you can assign multiple policies to a user by returning a list, and re
|
|||||||
|
|
||||||
### Creating application and provider
|
### Creating application and provider
|
||||||
|
|
||||||
Create an application in authentik. Create an _OAuth2/OpenID Provider_ with the following parameters:
|
Create an application in authentik. Create an OAuth2/OpenID provider with the following parameters:
|
||||||
|
|
||||||
- Client Type: `Confidential`
|
- Client Type: `Confidential`
|
||||||
- Scopes: OpenID, Email, Profile and the scope you created above
|
- Scopes: OpenID, Email, Profile, and the scope you created above
|
||||||
- Signing Key: Select any available key
|
- Signing Key: Select any available key
|
||||||
- Redirect URIs: `https://minio.company/oauth_callback`
|
- Redirect URIs: `https://minio.company/oauth_callback`
|
||||||
|
|
||||||
|
Set the scope of the MinIO scope mapping that you created in the provider (previous step) in the **Advanced** area under **Protocol Settings -> Scopes**.
|
||||||
|
|
||||||
Note the Client ID and Client Secret values. Create an application, using the provider you've created above. Note the slug of the application you've created.
|
Note the Client ID and Client Secret values. Create an application, using the provider you've created above. Note the slug of the application you've created.
|
||||||
|
|
||||||
## MinIO
|
## MinIO configuration
|
||||||
|
|
||||||
|
You can set up OpenID in two different ways: via the web interface or the command line.
|
||||||
|
|
||||||
|
### Web Interface
|
||||||
|
|
||||||
|
From the sidebar of the main page, go to **Identity -> OpenID**, click **Create**, and then define the configuration as follows:
|
||||||
|
|
||||||
|
- Name: MinIO
|
||||||
|
- Config URL: `https://minio.company/application/o/<minio slug>/.well-known/openid-configuration`
|
||||||
|
- Client ID: Your client ID from the previous step
|
||||||
|
- Client Secret: Your client secret from the previous step
|
||||||
|
- Scopes: `openid, email, profile, minio`
|
||||||
|
- Redirect URI: `https://minio.company/oauth_callback`
|
||||||
|
|
||||||
|
Finally, click **Save** and follow the instructions in the popup to restart your instance.
|
||||||
|
|
||||||
|
### Command Line
|
||||||
|
|
||||||
|
You must install the MinIO binaries from [here](https://min.io/docs/minio/linux/reference/minio-mc.html). You then need to create an alias for your instance using: `mc alias set myminio https://minio.company <access key> <secret key>`. You can follow [this StackOverflow answer](https://stackoverflow.com/a/77645374) to create a secret key and access key.
|
||||||
|
|
||||||
|
After that is done, run the following command to configure the OpenID provider:
|
||||||
|
|
||||||
```
|
```
|
||||||
~ mc admin config set myminio identity_openid \
|
~ mc admin config set myminio identity_openid \
|
||||||
config_url="https://authentik.company/application/o/<applicaiton-slug>/.well-known/openid-configuration" \
|
config_url="https://authentik.company/application/o/<minio slug>/.well-known/openid-configuration" \
|
||||||
client_id="<client id from above>" \
|
client_id="<client id>" \
|
||||||
client_secret="<client secret from above>" \
|
client_secret="<client secret>" \
|
||||||
scopes="openid,profile,email,minio"
|
scopes="openid,profile,email,minio"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user