Při práci s moderními ověřovacími toky je nejdůležitější zabezpečení. Vývojáři často potřebují integrovat ověřování s důvěryhodnými poskytovateli identit, jako je Google nebo Microsoft. Zde přichází ke slovu OpenID Connect (OIDC).
OIDC je vrstva identit postavená nad protokolem OAuth 2.0. Umožňuje aplikaci bezpečně ověřit identitu uživatele a získat základní informace o profilu. Počínaje nejnovějšími vylepšeními pro cs.NetKit.OAuth2Provider 4D 21 nyní usnadňuje práci s OpenID Connect tím, že podporuje parametr nonce spolu s novými atributy tokenu, včetně id_token.
Při vyžádání standardních rozsahů OAuth 2.0 obdržíte access_token, který je určen pro přístup k rozhraní API, ale neříká, kdo je uživatel. Chcete-li identifikovat uživatele, musíte zahrnout obor openid. Tím se aktivuje vrstva OpenID Connect a zajistí se, že poskytovatel identity vrátí také id_token.
Další obory mohou obohatit informace obsažené v id_tokenu:
- openid → povinné, aktivuje OpenID Connect a poskytuje id_token.
- profile → nepovinné, vrací informace o profilu, jako je jméno, přezdívka a obrázek.
- email → nepovinné, obsahuje e-mailovou adresu uživatele.
Parametr nonce je specifický pro požadavky OpenID Connect. Spojuje relaci klienta s vráceným ID Tokenem a pomáhá chránit před útoky typu replay.
- Je nepovinný, ale důrazně se doporučuje pro lepší zabezpečení.
- Hodnota se předává z požadavku na ověření do ID Tokenu v nezměněné podobě.
Co je ID_Token?
ID_token je vlastnost objektu tokenu, která se vrací při požadavku na obor openid. Obsahuje informace o identitě uživatele ve formátu JWT. Protože je zakódován jako text, budete muset JWT deserializovat, abyste mohli přečíst jeho obsah. K tomu můžete použít třídu JWT obsaženou v sadě 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..."
//}
závěr
Zavedením podpory nonce a id_token zjednodušuje 4D integraci OpenID Connect. Vyžádáním správných rozsahů a dekódováním id_tokenu mohou vaše aplikace bezpečně ověřovat uživatele a zároveň přistupovat ke spolehlivým informacím o identitě.
K tomuto příspěvku zatím nelze přidávat komentáře.