J'essaie d'utiliser OAuth2 pour l'authentification/l'autorisation, mais après de nombreuses lectures, je suis confus ... J'essaie de comprendre comment OAuth et OpenIDConnect sont liés les uns aux autres, et comment exactement je peux les utiliser pour autorizaton.
D'après ce que j'ai compris jusqu'à présent :
Une étendue est l'autorisation donnée par l'utilisateur à un client, validée sur le serveur de ressources
un id_token OpenID Connect est principalement destiné à l'application cliente, pour fournir des informations sur l'utilisateur, et NON comme un moyen pour le serveur de ressources de valider l'utilisateur.
Voici mon cas d'utilisation :
Et ce que je suis j'essaye de faire, ce qui m'embête :
J'ai donc besoin d'un moyen de vérifier l'autorisation donnée par une entité externe à un utilisateur, sur le serveur de ressources. Lequel, je crois, exclut l'utilisation de OAuth pour l'autorisation?
Je ne sais pas comment y parvenir avec la connexion OAuth/OpenID, ou même si cela correspond à mon cas d'utilisation.
Toutes mes excuses pour le mur de texte, je ne suis tout simplement pas sûr d'avoir mal compris la portée d'OAuth/OpenID Connect ici. Suis-je en train de faire des hypothèses erronées?
Je vous remercie.
Le concept de rôle peut être utilisé avec des jetons d'accès dans OpenID Connect (Oauth2).
Considérez qu'une étendue est une demande de réclamations sur l'utilisateur qui doit être incluse dans le jeton d'accès. L'API demandant l'accès sait qu'elle a besoin du rôle (par exemple) "employé", y compris le "scope=openid roles
"paramètre de requête dans la demande.
Le serveur d'authentification (AS) a accès aux informations de rôle concernant l'utilisateur (par exemple dans un annuaire LDAP). Il peut ensuite rechercher les rôles de l'utilisateur et les inclure dans la revendication "rôles" dans le jeton d'accès.
Vous pouvez également réduire la portée en demandant le rôle lui-même (scope=openid employee
), auquel cas l'AS pourrait l'inclure si l'utilisateur est membre de ce groupe. Ceci est un peu moins évolutif car il nécessite une connaissance détaillée des rôles requis, mais réduit la quantité de PII dans le jeton et réduit sa taille. De plus, si l'utilisateur n'est pas membre du groupe spécifié (c'est-à-dire que la portée ne peut pas être incluse dans le jeton), l'AS doit en informer l'API à ce sujet conformément à OAuth2.
L'utilisation du rôle est assez courante, et quelques exemples peuvent être trouvés sur:
Comme pour les questions 2) et 3): ne faites pas ça :)