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: "
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?