mirror of
https://github.com/lukaszraczylo/traefikoidc.git
synced 2026-10-14 04:07:46 +00:00
Add user email filtering logic.
This commit is contained in:
@@ -73,6 +73,7 @@ The middleware supports the following configuration options:
|
||||
| `rateLimit` | Sets the maximum number of requests per second | `100` | `500` |
|
||||
| `excludedURLs` | Lists paths that bypass authentication | none | `["/health", "/metrics", "/public"]` |
|
||||
| `allowedUserDomains` | Restricts access to specific email domains | none | `["company.com", "subsidiary.com"]` |
|
||||
| `allowedUsers` | A list of specific email addresses that are allowed access | none | `["[email protected]", "[email protected]"]` |
|
||||
| `allowedRolesAndGroups` | Restricts access to users with specific roles or groups | none | `["admin", "developer"]` |
|
||||
| `revocationURL` | The endpoint for revoking tokens | auto-discovered | `https://accounts.google.com/revoke` |
|
||||
| `oidcEndSessionURL` | The provider's end session endpoint | auto-discovered | `https://accounts.google.com/logout` |
|
||||
@@ -159,6 +160,67 @@ spec:
|
||||
- subsidiary.com
|
||||
```
|
||||
|
||||
### With Specific User Access
|
||||
|
||||
```yaml
|
||||
apiVersion: traefik.io/v1alpha1
|
||||
kind: Middleware
|
||||
metadata:
|
||||
name: oidc-specific-users
|
||||
namespace: traefik
|
||||
spec:
|
||||
plugin:
|
||||
traefikoidc:
|
||||
providerURL: https://accounts.google.com
|
||||
clientID: 1234567890.apps.googleusercontent.com
|
||||
clientSecret: your-client-secret
|
||||
sessionEncryptionKey: potato-secret-is-at-least-32-bytes-long
|
||||
callbackURL: /oauth2/callback
|
||||
logoutURL: /oauth2/logout
|
||||
scopes:
|
||||
- openid
|
||||
- email
|
||||
- profile
|
||||
allowedUsers:
|
||||
- [email protected]
|
||||
- [email protected]
|
||||
```
|
||||
|
||||
### With Both Domain and Specific User Access
|
||||
|
||||
```yaml
|
||||
apiVersion: traefik.io/v1alpha1
|
||||
kind: Middleware
|
||||
metadata:
|
||||
name: oidc-domain-and-users
|
||||
namespace: traefik
|
||||
spec:
|
||||
plugin:
|
||||
traefikoidc:
|
||||
providerURL: https://accounts.google.com
|
||||
clientID: 1234567890.apps.googleusercontent.com
|
||||
clientSecret: your-client-secret
|
||||
sessionEncryptionKey: potato-secret-is-at-least-32-bytes-long
|
||||
callbackURL: /oauth2/callback
|
||||
logoutURL: /oauth2/logout
|
||||
scopes:
|
||||
- openid
|
||||
- email
|
||||
- profile
|
||||
allowedUserDomains:
|
||||
- company.com
|
||||
allowedUsers:
|
||||
- [email protected]
|
||||
- [email protected]
|
||||
```
|
||||
|
||||
When configuring access control:
|
||||
- If only `allowedUsers` is set, only the specified email addresses will be granted access
|
||||
- If only `allowedUserDomains` is set, only users with email addresses from those domains will be granted access
|
||||
- If both are set, access is granted if the user's email is in `allowedUsers` OR their email's domain is in `allowedUserDomains`
|
||||
- If neither is set, any authenticated user will be granted access
|
||||
- Email matching is case-insensitive
|
||||
|
||||
### With Role-Based Access Control
|
||||
|
||||
```yaml
|
||||
@@ -452,6 +514,9 @@ http:
|
||||
- profile
|
||||
allowedUserDomains:
|
||||
- company.com
|
||||
allowedUsers:
|
||||
- [email protected]
|
||||
- [email protected]
|
||||
allowedRolesAndGroups:
|
||||
- admin
|
||||
- developer
|
||||
|
||||
Reference in New Issue
Block a user