diff --git a/Pipfile.lock b/Pipfile.lock index 12a33420d..82f4523ae 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -74,18 +74,18 @@ }, "boto3": { "hashes": [ - "sha256:0bb2c3159b9f5e0df50430bf06a155bd7f27f480825b6374dde807d42360a668", - "sha256:a49b3ab4bfa2f6394ba60165cfc468410797dd410f32eed47e22f61451ee986e" + "sha256:ba8de10d3ede338d51ae47e428b97dcc1d1b507741aa98697e63e879a147f4aa", + "sha256:e3f10ed6d9ca98415fdec15c85e50a89ec38d6229bce3fafd5e7965b16c4ebc5" ], "index": "pypi", - "version": "==1.16.43" + "version": "==1.16.44" }, "botocore": { "hashes": [ - "sha256:7398c900dbd4e3d61647269215396ea3e8082f494f3e7b65d9b6aca049c1d463", - "sha256:795a67338cadb0c3a45014a6c81659da6af623a4e973812f87a6f9d9fb7712e9" + "sha256:4ff05bc089ba78a5996f06dcfddf8ca51583e30ce779ed95e9952e90c1907420", + "sha256:7725e08c95ae96c4dbd955cb4ae44a0c06d3e41f76a7feb0a941c27a44c63113" ], - "version": "==1.19.43" + "version": "==1.19.44" }, "cachetools": { "hashes": [ @@ -152,11 +152,11 @@ }, "channels": { "hashes": [ - "sha256:74db79c9eca616be69d38013b22083ab5d3f9ccda1ab5e69096b1bb7da2d9b18", - "sha256:f50a6e79757a64c1e45e95e144a2ac5f1e99ee44a0718ab182c501f5e5abd268" + "sha256:056b72e51080a517a0f33a0a30003e03833b551d75394d6636c885d4edb8188f", + "sha256:3f15bdd2138bb4796e76ea588a0a344b12a7964ea9b2e456f992fddb988a4317" ], "index": "pypi", - "version": "==3.0.2" + "version": "==3.0.3" }, "channels-redis": { "hashes": [ @@ -899,10 +899,10 @@ }, "pytz": { "hashes": [ - "sha256:3e6b7dd2d1e0a59084bcee14a17af60c5c562cdc16d828e8eba2e683d3a7e268", - "sha256:5c55e189b682d420be27c6995ba6edce0c0a77dd67bfbe2ae6607134d5851ffd" + "sha256:16962c5fb8db4a8f63a26646d8886e9d769b6c511543557bc84e9569fb9a9cb4", + "sha256:180befebb1927b16f6b57101720075a984c019ac16b1b7575673bea42c6c3da5" ], - "version": "==2020.4" + "version": "==2020.5" }, "pyyaml": { "hashes": [ @@ -1607,10 +1607,10 @@ }, "pytz": { "hashes": [ - "sha256:3e6b7dd2d1e0a59084bcee14a17af60c5c562cdc16d828e8eba2e683d3a7e268", - "sha256:5c55e189b682d420be27c6995ba6edce0c0a77dd67bfbe2ae6607134d5851ffd" + "sha256:16962c5fb8db4a8f63a26646d8886e9d769b6c511543557bc84e9569fb9a9cb4", + "sha256:180befebb1927b16f6b57101720075a984c019ac16b1b7575673bea42c6c3da5" ], - "version": "==2020.4" + "version": "==2020.5" }, "pyyaml": { "hashes": [ diff --git a/authentik/providers/oauth2/models.py b/authentik/providers/oauth2/models.py index dc0511e19..a086514f4 100644 --- a/authentik/providers/oauth2/models.py +++ b/authentik/providers/oauth2/models.py @@ -461,7 +461,7 @@ class RefreshToken(ExpiringModel, BaseGrantModel): self._id_token = json.dumps(asdict(value)) def __str__(self): - return f"Refresh Token for {self.provider} for user {self.access_token.user}" + return f"Refresh Token for {self.provider} for user {self.user}" @property def at_hash(self): diff --git a/web/package-lock.json b/web/package-lock.json index 7311fccec..fa5f898f8 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -393,13 +393,13 @@ } }, "@typescript-eslint/eslint-plugin": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.11.0.tgz", - "integrity": "sha512-x4arJMXBxyD6aBXLm3W7mSDZRiABzy+2PCLJbL7OPqlp53VXhaA1HKK7R2rTee5OlRhnUgnp8lZyVIqjnyPT6g==", + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.11.1.tgz", + "integrity": "sha512-fABclAX2QIEDmTMk6Yd7Muv1CzFLwWM4505nETzRHpP3br6jfahD9UUJkhnJ/g2m7lwfz8IlswcwGGPGiq9exw==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "4.11.0", - "@typescript-eslint/scope-manager": "4.11.0", + "@typescript-eslint/experimental-utils": "4.11.1", + "@typescript-eslint/scope-manager": "4.11.1", "debug": "^4.1.1", "functional-red-black-tree": "^1.0.1", "regexpp": "^3.0.0", @@ -408,71 +408,71 @@ }, "dependencies": { "@typescript-eslint/scope-manager": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.11.0.tgz", - "integrity": "sha512-6VSTm/4vC2dHM3ySDW9Kl48en+yLNfVV6LECU8jodBHQOhO8adAVizaZ1fV0QGZnLQjQ/y0aBj5/KXPp2hBTjA==", + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.11.1.tgz", + "integrity": "sha512-Al2P394dx+kXCl61fhrrZ1FTI7qsRDIUiVSuN6rTwss6lUn8uVO2+nnF4AvO0ug8vMsy3ShkbxLu/uWZdTtJMQ==", "dev": true, "requires": { - "@typescript-eslint/types": "4.11.0", - "@typescript-eslint/visitor-keys": "4.11.0" + "@typescript-eslint/types": "4.11.1", + "@typescript-eslint/visitor-keys": "4.11.1" } }, "@typescript-eslint/types": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.11.0.tgz", - "integrity": "sha512-XXOdt/NPX++txOQHM1kUMgJUS43KSlXGdR/aDyEwuAEETwuPt02Nc7v+s57PzuSqMbNLclblQdv3YcWOdXhQ7g==", + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.11.1.tgz", + "integrity": "sha512-5kvd38wZpqGY4yP/6W3qhYX6Hz0NwUbijVsX2rxczpY6OXaMxh0+5E5uLJKVFwaBM7PJe1wnMym85NfKYIh6CA==", "dev": true }, "@typescript-eslint/visitor-keys": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.11.0.tgz", - "integrity": "sha512-tRYKyY0i7cMk6v4UIOCjl1LhuepC/pc6adQqJk4Is3YcC6k46HvsV9Wl7vQoLbm9qADgeujiT7KdLrylvFIQ+A==", + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.11.1.tgz", + "integrity": "sha512-IrlBhD9bm4bdYcS8xpWarazkKXlE7iYb1HzRuyBP114mIaj5DJPo11Us1HgH60dTt41TCZXMaTCAW+OILIYPOg==", "dev": true, "requires": { - "@typescript-eslint/types": "4.11.0", + "@typescript-eslint/types": "4.11.1", "eslint-visitor-keys": "^2.0.0" } } } }, "@typescript-eslint/experimental-utils": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.11.0.tgz", - "integrity": "sha512-1VC6mSbYwl1FguKt8OgPs8xxaJgtqFpjY/UzUYDBKq4pfQ5lBvN2WVeqYkzf7evW42axUHYl2jm9tNyFsb8oLg==", + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.11.1.tgz", + "integrity": "sha512-mAlWowT4A6h0TC9F+J5pdbEhjNiEMO+kqPKQ4sc3fVieKL71dEqfkKgtcFVSX3cjSBwYwhImaQ/mXQF0oaI38g==", "dev": true, "requires": { "@types/json-schema": "^7.0.3", - "@typescript-eslint/scope-manager": "4.11.0", - "@typescript-eslint/types": "4.11.0", - "@typescript-eslint/typescript-estree": "4.11.0", + "@typescript-eslint/scope-manager": "4.11.1", + "@typescript-eslint/types": "4.11.1", + "@typescript-eslint/typescript-estree": "4.11.1", "eslint-scope": "^5.0.0", "eslint-utils": "^2.0.0" }, "dependencies": { "@typescript-eslint/scope-manager": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.11.0.tgz", - "integrity": "sha512-6VSTm/4vC2dHM3ySDW9Kl48en+yLNfVV6LECU8jodBHQOhO8adAVizaZ1fV0QGZnLQjQ/y0aBj5/KXPp2hBTjA==", + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.11.1.tgz", + "integrity": "sha512-Al2P394dx+kXCl61fhrrZ1FTI7qsRDIUiVSuN6rTwss6lUn8uVO2+nnF4AvO0ug8vMsy3ShkbxLu/uWZdTtJMQ==", "dev": true, "requires": { - "@typescript-eslint/types": "4.11.0", - "@typescript-eslint/visitor-keys": "4.11.0" + "@typescript-eslint/types": "4.11.1", + "@typescript-eslint/visitor-keys": "4.11.1" } }, "@typescript-eslint/types": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.11.0.tgz", - "integrity": "sha512-XXOdt/NPX++txOQHM1kUMgJUS43KSlXGdR/aDyEwuAEETwuPt02Nc7v+s57PzuSqMbNLclblQdv3YcWOdXhQ7g==", + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.11.1.tgz", + "integrity": "sha512-5kvd38wZpqGY4yP/6W3qhYX6Hz0NwUbijVsX2rxczpY6OXaMxh0+5E5uLJKVFwaBM7PJe1wnMym85NfKYIh6CA==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.11.0.tgz", - "integrity": "sha512-eA6sT5dE5RHAFhtcC+b5WDlUIGwnO9b0yrfGa1mIOIAjqwSQCpXbLiFmKTdRbQN/xH2EZkGqqLDrKUuYOZ0+Hg==", + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.11.1.tgz", + "integrity": "sha512-tC7MKZIMRTYxQhrVAFoJq/DlRwv1bnqA4/S2r3+HuHibqvbrPcyf858lNzU7bFmy4mLeIHFYr34ar/1KumwyRw==", "dev": true, "requires": { - "@typescript-eslint/types": "4.11.0", - "@typescript-eslint/visitor-keys": "4.11.0", + "@typescript-eslint/types": "4.11.1", + "@typescript-eslint/visitor-keys": "4.11.1", "debug": "^4.1.1", "globby": "^11.0.1", "is-glob": "^4.0.1", @@ -482,12 +482,12 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.11.0.tgz", - "integrity": "sha512-tRYKyY0i7cMk6v4UIOCjl1LhuepC/pc6adQqJk4Is3YcC6k46HvsV9Wl7vQoLbm9qADgeujiT7KdLrylvFIQ+A==", + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.11.1.tgz", + "integrity": "sha512-IrlBhD9bm4bdYcS8xpWarazkKXlE7iYb1HzRuyBP114mIaj5DJPo11Us1HgH60dTt41TCZXMaTCAW+OILIYPOg==", "dev": true, "requires": { - "@typescript-eslint/types": "4.11.0", + "@typescript-eslint/types": "4.11.1", "eslint-visitor-keys": "^2.0.0" } }, @@ -508,41 +508,41 @@ } }, "@typescript-eslint/parser": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.11.0.tgz", - "integrity": "sha512-NBTtKCC7ZtuxEV5CrHUO4Pg2s784pvavc3cnz6V+oJvVbK4tH9135f/RBP6eUA2KHiFKAollSrgSctQGmHbqJQ==", + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.11.1.tgz", + "integrity": "sha512-BJ3jwPQu1jeynJ5BrjLuGfK/UJu6uwHxJ/di7sanqmUmxzmyIcd3vz58PMR7wpi8k3iWq2Q11KMYgZbUpRoIPw==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "4.11.0", - "@typescript-eslint/types": "4.11.0", - "@typescript-eslint/typescript-estree": "4.11.0", + "@typescript-eslint/scope-manager": "4.11.1", + "@typescript-eslint/types": "4.11.1", + "@typescript-eslint/typescript-estree": "4.11.1", "debug": "^4.1.1" } }, "@typescript-eslint/scope-manager": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.11.0.tgz", - "integrity": "sha512-6VSTm/4vC2dHM3ySDW9Kl48en+yLNfVV6LECU8jodBHQOhO8adAVizaZ1fV0QGZnLQjQ/y0aBj5/KXPp2hBTjA==", + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.11.1.tgz", + "integrity": "sha512-Al2P394dx+kXCl61fhrrZ1FTI7qsRDIUiVSuN6rTwss6lUn8uVO2+nnF4AvO0ug8vMsy3ShkbxLu/uWZdTtJMQ==", "dev": true, "requires": { - "@typescript-eslint/types": "4.11.0", - "@typescript-eslint/visitor-keys": "4.11.0" + "@typescript-eslint/types": "4.11.1", + "@typescript-eslint/visitor-keys": "4.11.1" } }, "@typescript-eslint/types": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.11.0.tgz", - "integrity": "sha512-XXOdt/NPX++txOQHM1kUMgJUS43KSlXGdR/aDyEwuAEETwuPt02Nc7v+s57PzuSqMbNLclblQdv3YcWOdXhQ7g==", + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.11.1.tgz", + "integrity": "sha512-5kvd38wZpqGY4yP/6W3qhYX6Hz0NwUbijVsX2rxczpY6OXaMxh0+5E5uLJKVFwaBM7PJe1wnMym85NfKYIh6CA==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.11.0.tgz", - "integrity": "sha512-eA6sT5dE5RHAFhtcC+b5WDlUIGwnO9b0yrfGa1mIOIAjqwSQCpXbLiFmKTdRbQN/xH2EZkGqqLDrKUuYOZ0+Hg==", + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.11.1.tgz", + "integrity": "sha512-tC7MKZIMRTYxQhrVAFoJq/DlRwv1bnqA4/S2r3+HuHibqvbrPcyf858lNzU7bFmy4mLeIHFYr34ar/1KumwyRw==", "dev": true, "requires": { - "@typescript-eslint/types": "4.11.0", - "@typescript-eslint/visitor-keys": "4.11.0", + "@typescript-eslint/types": "4.11.1", + "@typescript-eslint/visitor-keys": "4.11.1", "debug": "^4.1.1", "globby": "^11.0.1", "is-glob": "^4.0.1", @@ -568,12 +568,12 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.11.0.tgz", - "integrity": "sha512-tRYKyY0i7cMk6v4UIOCjl1LhuepC/pc6adQqJk4Is3YcC6k46HvsV9Wl7vQoLbm9qADgeujiT7KdLrylvFIQ+A==", + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.11.1.tgz", + "integrity": "sha512-IrlBhD9bm4bdYcS8xpWarazkKXlE7iYb1HzRuyBP114mIaj5DJPo11Us1HgH60dTt41TCZXMaTCAW+OILIYPOg==", "dev": true, "requires": { - "@typescript-eslint/types": "4.11.0", + "@typescript-eslint/types": "4.11.1", "eslint-visitor-keys": "^2.0.0" } }, diff --git a/web/package.json b/web/package.json index 00ace845e..1923b1899 100644 --- a/web/package.json +++ b/web/package.json @@ -27,8 +27,8 @@ }, "devDependencies": { "@rollup/plugin-typescript": "^8.1.0", - "@typescript-eslint/eslint-plugin": "^4.11.0", - "@typescript-eslint/parser": "^4.11.0", + "@typescript-eslint/eslint-plugin": "^4.11.1", + "@typescript-eslint/parser": "^4.11.1", "eslint": "^7.16.0", "eslint-config-google": "^0.14.0", "eslint-plugin-lit": "^1.3.0", diff --git a/website/docs/integrations/services/grafana/index.md b/website/docs/integrations/services/grafana/index.md new file mode 100644 index 000000000..03ca9253d --- /dev/null +++ b/website/docs/integrations/services/grafana/index.md @@ -0,0 +1,66 @@ +--- +title: Grafana +--- + +## What is Grafana + +From https://en.wikipedia.org/wiki/Grafana + +:::note +Grafana is a multi-platform open source analytics and interactive visualization web application. It provides charts, graphs, and alerts for the web when connected to supported data sources, Grafana Enterprise version with additional capabilities is also available. It is expandable through a plug-in system. +::: + +## Preparation + +The following placeholders will be used: + +- `grafana.company` is the FQDN of the Grafana install. +- `authentik.company` is the FQDN of the authentik install. + +Create an application in authentik. Create an OAuth2/OpenID provider with the following parameters: + +- Client Type: `Confidential` +- JWT Algorithm: `RS256` +- Scopes: OpenID, Email and Profile +- RSA Key: Select any available key +- Redirect URIs: `https://grafana.company/login/generic_oauth` + +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. + +## Grafana + +If your Grafana is running in docker, set the following environment variables: + +```yaml +environment: + GF_AUTH_GENERIC_OAUTH_ENABLED: "true" + GF_AUTH_GENERIC_OAUTH_NAME: "authentik" + GF_AUTH_GENERIC_OAUTH_CLIENT_ID: "" + GF_AUTH_GENERIC_OAUTH_CLIENT_SECRET: "" + GF_AUTH_GENERIC_OAUTH_SCOPES: "openid profile email" + GF_AUTH_GENERIC_OAUTH_AUTH_URL: "https://authentik.company/application/o/authorize/" + GF_AUTH_GENERIC_OAUTH_TOKEN_URL: "https://authentik.company/application/o/token/" + GF_AUTH_GENERIC_OAUTH_API_URL: "https://authentik.company/application/o/userinfo/" + GF_AUTH_SIGNOUT_REDIRECT_URL: "https://authentik.company/application/o//end-session/" + # Optionally enable auto-login + GF_AUTH_OAUTH_AUTO_LOGIN: "true" +``` + +If you are using a config-file instead, you have to set these options: + +```ini +[auth] +signout_redirect_url = https://authentik.company/application/o//end-session/ +# Optionally enable auto-login +oauth_auto_login = true + +[auth.generic_oauth] +name = authentik +enabled = true +client_id = +client_secret = +scopes = openid email profile +auth_url = https://authentik.company/application/o/authorize/ +token_url = https://authentik.company/application/o/token/ +api_url = https://authentik.company/application/o/userinfo/ +``` diff --git a/website/docs/integrations/services/harbor/index.md b/website/docs/integrations/services/harbor/index.md index 4177d3ea8..f1a5c40af 100644 --- a/website/docs/integrations/services/harbor/index.md +++ b/website/docs/integrations/services/harbor/index.md @@ -17,13 +17,14 @@ The following placeholders will be used: - `harbor.company` is the FQDN of the Harbor install. - `authentik.company` is the FQDN of the authentik install. -Create an application in authentik. Create an OpenID provider with the following parameters: +Create an OAuth2/OpenID provider with the following parameters: - Client Type: `Confidential` -- Response types: `code (Authorization Code Flow)` - JWT Algorithm: `RS256` - Redirect URIs: `https://harbor.company/c/oidc/callback` -- Scopes: `openid` +- Scopes: OpenID, Email and Profile + +Note the Client ID and Client Secret values. Create an application, using the provider you've created above. ## Harbor diff --git a/website/docs/integrations/services/vmware-vcenter/index.md b/website/docs/integrations/services/vmware-vcenter/index.md index 1af95c656..9670fb4d1 100644 --- a/website/docs/integrations/services/vmware-vcenter/index.md +++ b/website/docs/integrations/services/vmware-vcenter/index.md @@ -51,12 +51,11 @@ Under _Sources_, click _Edit_ and ensure that "Autogenerated Active Directory Ma ### Step 3 -Under _Providers_, create an OAuth2/OpenID Provider with these settings: +Under _Providers_, create an OAuth2/OpenID provider with these settings: - Client Type: Confidential - JWT Algorithm: RS256 - Redirect URI: `https://vcenter.company/ui/login/oauth2/authcode` -- Post Logout Redirect URIs: `https://vcenter.company/ui/login` - Sub Mode: If your Email address Schema matches your UPN, select "Based on the User's Email...", otherwise select "Based on the User's UPN...". - Scopes: Select the Scope Mapping you've created in Step 1 diff --git a/website/docs/releases/0.14.md b/website/docs/releases/0.14.md index 7e1fe481e..0343da4e7 100644 --- a/website/docs/releases/0.14.md +++ b/website/docs/releases/0.14.md @@ -20,7 +20,7 @@ title: Release 0.14 - The OAuth2 Provider has been updated to closer match the OpenID Connect Specifications - Response time now longer has to be configured manually. The issuer field can be configured now (the default behaviour is the same as pre-0.14) + Response type no longer has to be configured manually. The issuer field can be configured now (the default behaviour is the same as pre-0.14) Authorization Codes are now generated as a JWT Token, which is not specified as spec, but seems to be a quasi-standard. @@ -50,7 +50,7 @@ This release does not introduce any new requirements. ### docker-compose -Download the latest docker-compose file from [here](https://raw.githubusercontent.com/BeryJu/authentik/version-0.14/docker-compose.yml) and run `docker-compose up -d`. +Download the latest docker-compose file from [here](https://raw.githubusercontent.com/BeryJu/authentik/version-0.14/docker-compose.yml). Aftewards, simply run `docker-compose up -d` and then the normal upgrade command of `docker-compose run --rm server migrate`. ### Kubernetes diff --git a/website/sidebars.js b/website/sidebars.js index 8f5a307b5..1760bf768 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -101,6 +101,7 @@ module.exports = { "integrations/services/aws/index", "integrations/services/awx-tower/index", "integrations/services/gitlab/index", + "integrations/services/grafana/index", "integrations/services/harbor/index", "integrations/services/home-assistant/index", "integrations/services/nextcloud/index", diff --git a/website/src/pages/index.js b/website/src/pages/index.js index ab5e9dada..5b529a011 100644 --- a/website/src/pages/index.js +++ b/website/src/pages/index.js @@ -11,8 +11,8 @@ const features = [ title: "Easy to Use", description: ( <> - Identity made easy. authentik makes single-sign on, user - enrollment and access control simple. + Identity made easy. authentik makes single-sign on (SSO), user + enrollment, and access control simple. ), }, @@ -20,7 +20,7 @@ const features = [ title: "Realise your workflow", description: ( <> - authentik lets you build your Workflow as you need it, no + authentik lets you build your workflow as you need it, no limitations. ), @@ -109,20 +109,20 @@ function Home() { authentik is an open-source Identity Provider focused on flexibility and versatility. You can use authentik in an existing environment - to add support for new protocols. authentik - is also a great solution for implementing - signup/recovery/etc in your application, so - you don't have to deal with it. + to add support for new protocols, implement + sign-up/recovery/etc. in your application so + you don't have to deal with it, and many other + things.

-

Upmost flexibility

+

Utmost flexibility

You can adopt authentik to your environment, - regardless of your requirements. Need an Active- - Directory integrated SSO Provider? Do you want + regardless of your requirements. Need an Active-Directory + integrated SSO Provider? Do you want to implement a custom enrollment process for your customers? Are you developing an application and don't want to deal with User verification and recovery?