Fournisseur OIDC
Le fournisseur OIDC peut être défini pour utiliser Maverics en tant que fournisseur d’identité OIDC. Actuellement, le fournisseur OIDC
prend en charge les types d’autorisation d’accès suivants : authorization_code
,
client_credentials
et refresh_token
.
Options de configuration
Discovery
discovery
définit la configuration d’OIDC Discovery.
Issuer
issuer
correspond au domaine auquel les jetons seront attribués. Le domaine « Issuer » est une URL sensible à la casse
utilisant le schéma https et contenant les éléments suivants : schéma, hôte et, éventuellement, numéro de port
et chemin d’accès, mais aucun élément de requête ou de fragment.
L’émetteur du fournisseur OIDC (qui est généralement obtenu au cours de la phase « Discovery ») doit
correspondre exactement à la valeur de la réclamation iss
(émetteur) dans le jeton d’identification.
Endpoints
endpoints
définit l’emplacement où les terminaux OIDC sont servis.
Well-Known
wellKnown
correspond au terminal où le fournisseur OIDC répondra aux demandes de métadonnées.
Ce terminal peut être utilisé pour découvrir les terminaux exposés par le serveur, les
champs d’application disponibles auprès du serveur et les algorithmes permettant de signer et/ou de chiffrer
les jetons d’accès et d’identification.
Cela correspond à la section 3 d’OpenID Connect Discovery 1.0.
JWKS
jwks
correspond au terminal où le fournisseur OIDC renvoie des informations concernant l’ensemble de clés Web JSON
(JWK) utilisées pour signer les JWT.
Cela correspond au document RFC 7517: JSON Web Key (JWK).
Authorization
auth correspond
correspond au terminal où le fournisseur OIDC répondra à la demande d’autorisation OAuth 2.0
en vue d’authentifier l’utilisateur final.
Cela correspond à la section 3.1.2 d’OpenID Connect Core 1.0.
Token
token
correspond au terminal où le fournisseur OIDC répondra à la partie utilisatrice
avec un jeton d’accès et un jeton d’identification.
Cela correspond à la section 3.1.3 d’OpenID Connect Core 1.0.
Userinfo
userinfo
correspond au terminal où le fournisseur OIDC renverra les réclamations relatives à
l’utilisateur final authentifié. S’il est disponible, le terminal renverra les réclamations
associées à l’un des champs d’application suivants : profile
, openid
, phone
, email
et address
.
Si l’option claimsMapping
a été définie pour le client correspondant, ces mappages
seront appliqués à la réponse userinfo.
Cela correspond à la section 5.3 d’OpenID Connect Core 1.0.
Le lien entre les champs d’application et les réclamations est défini dans la section 5.4 d’OpenID Connect Core 1.0.
Introspect
introspect
correspond au terminal où le fournisseur OIDC renvoie les réclamations relatives au
jeton d’accès qui fait l’objet de l’introspection.
Cela correspond au document RFC 7662, OAuth 2.0 Token Introspection.
Revoke
revoke
correspond au terminal où le fournisseur OIDC répondra aux demandes de révocation de jeton OAuth 2.0,
en révoquant l’utilisation du jeton d’actualisation ou d’accès spécifié.
Cela correspond à la section 2 du document RFC 7009.
End Session
endSession
correspond au terminal où le fournisseur OIDC répondra à la
demande de déconnexion initiée par le fournisseur de ressources.
Cela correspond au document OpenID Connect RP-Initiated Logout RFC.
JWKS
jwks
constitue une liste de clés utilisées pour la signature des jetons. La clé figurant en tête de liste sera
utilisée pour la signature. Toutes les clés publiques seront disponibles à la consommation au niveau du
terminal JWKS.
Algorithm
algorithm
représente l’algorithme de chiffrement utilisé pour générer la
paire de clés. Actuellement, seul RSA256 est pris en charge.
Private Key
privateKey
correspond à la clé privée encodée au format PEM. Ce champ peut éventuellement être chargé
à partir d’un fournisseur de secrets.
Extension de service BuildUserInfoClaims
buildUserInfoClaimsSE
est une extension de services optionnelle permettant de personnaliser les
demandes renvoyées par le terminal userinfo. L’argument session
fourni dans
l’extension de services pointe vers les attributs de session associés à l’utilisateur requis.
Exemples
Exemple de configuration de base du fournisseur OIDC
oidcProvider:
discovery:
issuer: https://maverics.sonarsystems.com
endpoints:
wellKnown: https://maverics.sonarsystems.com/.well-known/openid-config
jwks: https://maverics.sonarsystems.com/.well-known/jwks.json
auth: https://maverics.sonarsystems.com/oauth2/auth
token: https://maverics.sonarsystems.com/oauth2/token
userinfo: https://maverics.sonarsystems.com/userinfo
introspect: https://maverics.sonarsystems.com/introspect
revoke: https://maverics.sonarsystems.com/revoke
jwks:
- algorithm: RSA256
privateKey: <authorizationServerPrivateKey>
Exemple de configuration de base du fournisseur OIDC avec extension de service
oidcProvider:
discovery:
issuer: https://maverics.sonarsystems.com
endpoints:
wellKnown: https://maverics.sonarsystems.com/.well-known/openid-config
jwks: https://maverics.sonarsystems.com/.well-known/jwks.json
auth: https://maverics.sonarsystems.com/oauth2/auth
token: https://maverics.sonarsystems.com/oauth2/token
userinfo: https://maverics.sonarsystems.com/userinfo
introspect: https://maverics.sonarsystems.com/introspect
revoke: https://maverics.sonarsystems.com/revoke
endSession: https://maverics.sonarsystems.com/oidc/logout
jwks:
- algorithm: RSA256
privateKey: <authorizationServerPrivateKey>
buildUserInfoClaimsSE:
funcName: BuildUserInfoClaims
file: /etc/maverics/extensions/auth.go
/etc/maverics/extensions/auth.go
package main
import (
"net/http"
"github.com/strata-io/service-extension/orchestrator"
)
func BuildUserInfoClaims(api orchestrator.Orchestrator, _ *http.Request) (map[string]any, error) {
session, err := api.Session()
if err != nil {
logger.Error("se", "unable to retrieve session", "error", err.Error())
return nil, err
}
groups, err := session.GetString("okta.groups")
return map[string]any{
"groups": groups,
}, err
}