Lorsque l’on travaille avec des flux d’authentification modernes, la sécurité est primordiale. Les développeurs doivent souvent intégrer l’authentification avec des fournisseurs d’identité de confiance tels que Google ou Microsoft. C’est là que l ‘OpenID Connect (OIDC) entre en jeu.
OIDC est une couche d’identité construite au-dessus d’OAuth 2.0. Elle permet à votre application de vérifier l’identité d’un utilisateur et d’obtenir des informations de base sur son profil de manière sécurisée. En commençant par les dernières améliorations apportées à la classe cs.NetKit.OAuth2Provider 4D 21 facilite l’utilisation d’OpenID Connect en prenant en charge le paramètre nonce, ainsi que de nouveaux attributs de jeton, y compris le jeton id_token.
Lorsque vous demandez des champs d’application OAuth 2.0 standard, vous recevez un access_token, qui permet d’accéder aux API, mais qui ne vous indique pas l’identité de l’utilisateur. Pour identifier l’utilisateur, vous devez inclure la portée openid. Cela active la couche OpenID Connect et garantit que le fournisseur d’identité renvoie également un id_token.
Des champs d’application supplémentaires peuvent enrichir les informations contenues dans l’id_token :
- openid → obligatoire, active OpenID Connect et fournit un id_token.
- profile → optionnel, renvoie des informations de profil telles que le nom, le surnom et la photo.
- email → optionnel, inclut l’adresse électronique de l’utilisateur.
Le paramètre nonce est spécifique aux demandes OpenID Connect. Il associe une session client au jeton d’identification renvoyé et contribue à la protection contre les attaques par rejeu.
- Il est facultatif, mais fortement recommandé pour améliorer la sécurité.
- La valeur est transmise sans modification de la demande d’authentification au jeton d’identification.
Qu’est-ce que le jeton d’identification ?
L’id_token est une propriété de l’objet token, renvoyé lorsque la portée openid est demandée. Il contient des informations sur l’identité de l’utilisateur au format JWT. Comme il est encodé sous forme de texte, vous devrez désérialiser le JWT afin de lire son contenu. Pour ce faire, vous pouvez utiliser la classe JWT contenue dans Netkit.
var $provider:={}
$provider.name:="Microsoft"
$provider.permission:="signedIn"
$provider.clientId:="xxxx"
$provider.redirectURI:="http://127.0.0.1:80/authorize/"
$provider.scope:="openid profile email" // request identity + profile info
$provider.nonce:="randomNonce456" // optional nonce value
var $oauth:=cs.NetKit.OAuth2Provider.new($provider)
var $token:=$oauth.getToken()
// Access the id_token
If ($token.token.id_token#Null)
// Deserialize the JWT result with cs.NetKit.JWT class
var $openID:=cs.NetKit.JWT.new().decode($token.token.id_token)
If ($openID.payload.nonce=$param.nonce)
ALERT("Hello "+$openID.payload.name)
End if
End if
//$openID={
// header: {
// typ: "JWT";
// alg: "RS256";
// kid: "HS23b7Do..."
// };
// payload: {
// aud: "b6822251-7..."; // the clientId (your application).
// iss: "https://login.microsoftonline.com/06dc191b-7348-4b66-b0d9-806cb7d9455b/v2.0";
// iat: 1758537433; // the time when the token was issued.
// nbf: 1758537433; // the earliest time when the token is considered valid.
// exp: 1758541333; // the token expiration time.
// email: "your.name@outlook.com";
// name: "Your Name";
// nonce: "randomNonce456"; // the value sent in the request to protect against replay attacks (if used).
// oid: "064fd139-65..."; // the unique identifier of the user’s account in the identity provider’s directory
// preferred_username: "your.name@outlook.com";
// rh: "1.AV8AGxncBkhz..."; // refresh token handle
// sid: "008cb789-7..."; // session ID
// sub: "6RcYjA-CqS..."; // the unique identifier of the user
// tid: "06dc191b-73..."; // identifies the tenant (organization)
// uti: "sS7qSOW0..."; // unique token identifier
// ver: "2.0"
// };
// signature": "gy4AwVunCf_NbeUP..."
//}
conclusion
Avec l’introduction du support des nonce et id_token, 4D simplifie l’intégration d’OpenID Connect. En demandant les bons scopes et en décodant l’id_token, vos applications peuvent authentifier les utilisateurs en toute sécurité tout en accédant à des informations d’identité fiables.
Les commentaires ne sont pas disponibles pour cet article pour le moment.