Microsoft Identitásplatform alkalmazáshitelesítési tanúsítvány hitelesítő adatai
A Microsoft Identitásplatform lehetővé teszi az alkalmazás számára, hogy saját hitelesítő adatait használja a hitelesítéshez, bárhol, ahol egy ügyfélkulcs használható, például az OAuth 2.0 ügyfél hitelesítő adatainak átadási folyamatában és az OBO-folyamatban.
Az alkalmazások hitelesítéshez használható hitelesítő adatainak egyik formája egy JSON-webjogkivonat (JWT), amely egy olyan tanúsítvánnyal van aláírva, amelyet az alkalmazás birtokol. Ezt az ügyfél-hitelesítési beállítás OpenID Connect-specifikációja private_key_jwt
ismerteti.
Ha egy másik identitásszolgáltató által kiadott JWT-t szeretne használni az alkalmazás hitelesítő adataiként, tekintse meg a számítási feladatok identitás-összevonását az összevonási szabályzatok beállításához.
Helyességi formátum
Az állítás kiszámításához használhatja a számos JWT-kódtár egyikét a választott nyelven – az MSAL ezt támogatja a használatával .WithCertificate()
. Az adatokat a jogkivonat a fejlécében, jogcímeiben és aláírásában hordozta.
Fejléc
Paraméter | Megjegyzés |
---|---|
alg |
PS256-nak kell lennie |
typ |
JWT-nek kell lennie |
x5t#s256 |
Base64url-kódolású SHA-256 ujjlenyomat az X.509-tanúsítvány DER-kódolásáról. |
Jogcímek (hasznos adatok)
Jogcím típusa | Érték | Leírás |
---|---|---|
aud |
https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/token |
Az "aud" (célközönség) jogcím azonosítja azokat a címzetteket, akiknek a JWT-t szánják (itt Microsoft Entra-azonosító). Lásd: RFC 7519, 4.1.3. szakasz. Ebben az esetben ez a címzett a bejelentkezési kiszolgáló (login.microsoftonline.com ). |
exp |
1601519414 | Az "exp" (lejárati idő) jogcím azonosítja azt a lejárati időt, amelyen a JWT nem fogadható el feldolgozásra. Lásd: RFC 7519, 4.1.4. Ez lehetővé teszi az állítás addigi használatát, ezért legfeljebb 5-10 perccel nbf rövid legyen. A Microsoft Entra ID jelenleg nem korlátozza a exp korlátozásokat. |
iss |
{ClientID} | Az "iss" (kiállító) jogcím azonosítja a JWT-t kibocsátó tagot, ebben az esetben az ügyfélalkalmazást. Használja a GUID-alkalmazásazonosítót. |
jti |
(a Guid) | A "jti" (JWT ID) jogcím egyedi azonosítót biztosít a JWT-hez. Az azonosító értékét olyan módon kell hozzárendelni, amely biztosítja, hogy elhanyagolható a valószínűsége annak, hogy ugyanazt az értéket véletlenül egy másik adatobjektumhoz rendelik. Ha az alkalmazás több kiállítót használ, a különböző kiállítók által előállított értékek között is meg kell akadályozni az ütközéseket. A "jti" érték egy kis- és nagybetűkre érzékeny sztring. RFC 7519, 4.1.7. szakasz |
nbf |
1601519114 | Az "nbf" (nem korábbi) jogcím azt az időpontot azonosítja, amely előtt a JWT NEM fogadható el feldolgozásra. RFC 7519, 4.1.5. Az aktuális idő használata megfelelő. |
sub |
{ClientID} | Az "al" (tárgy) jogcím azonosítja a JWT tárgyát, ebben az esetben az alkalmazást is. Használja ugyanazt az értéket, mint a iss . |
iat |
1601519114 | Az "iat" (at) jogcím azonosítja a JWT kiállításának időpontját. Ez a jogcím a JWT korának meghatározására használható. RFC 7519, 4.1.5. |
Aláírás
Az aláírás kiszámítása a JSON-webjogkivonat RFC7519 specifikációjában leírt tanúsítvány alkalmazásával történik. HASZNÁLJON PSS-kitöltést.
Példa dekódolt JWT-állításra
{
"alg": "PS256",
"typ": "JWT",
"x5t#sha256": "A1bC2dE3fH4iJ5kL6mN7oP8qR9sT0u"
}
.
{
"aud": "https: //login.microsoftonline.com/contoso.onmicrosoft.com/oauth2/v2.0/token",
"exp": 1484593341,
"iss": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"jti": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"nbf": 1484592741,
"sub": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"
}
.
"A1bC2dE3fH4iJ5kL6mN7oP8qR9sT0u..."
Példa kódolt JWT-állításra
Az alábbi sztring egy példa a kódolt helyességre. Ha gondosan néz ki, három ponttal (ponttal elválasztott) szakaszt.
észlel:
- Az első szakasz kódolja a fejlécet
- A második szakasz kódolja a jogcímeket (hasznos adatok)
- Az utolsó szakasz az első két szakasz tartalmából származó tanúsítványokkal kiszámított aláírás
"eyJhbGciOiJSUzI1NiIsIng1dCI6Imd4OHRHeXN5amNScUtqRlBuZDdSRnd2d1pJMCJ9.eyJhdWQiOiJodHRwczpcL1wvbG9naW4ubWljcm9zb2Z0b25saW5lLmNvbVwvam1wcmlldXJob3RtYWlsLm9ubWljcm9zb2Z0LmNvbVwvb2F1dGgyXC90b2tlbiIsImV4cCI6MTQ4NDU5MzM0MSwiaXNzIjoiOTdlMGE1YjctZDc0NS00MGI2LTk0ZmUtNWY3N2QzNWM2ZTA1IiwianRpIjoiMjJiM2JiMjYtZTA0Ni00MmRmLTljOTYtNjVkYmQ3MmMxYzgxIiwibmJmIjoxNDg0NTkyNzQxLCJzdWIiOiI5N2UwYTViNy1kNzQ1LTQwYjYtOTRmZS01Zjc3ZDM1YzZlMDUifQ.
Gh95kHCOEGq5E_ArMBbDXhwKR577scxYaoJ1P{a lot of characters here}KKJDEg"
Tanúsítvány regisztrálása Microsoft Identitásplatform
A tanúsítvány hitelesítő adatait az Microsoft Identitásplatform ügyfélalkalmazáshoz társíthatja a Microsoft Entra felügyeleti központon keresztül az alábbi módszerek bármelyikével:
A tanúsítványfájl feltöltése
Az ügyfélalkalmazás Alkalmazásregisztrációk lapján:
- Válassza a Tanúsítványok > titkos>tanúsítványok lehetőséget.
- Válassza a Tanúsítvány feltöltése lehetőséget, és válassza ki a feltölteni kívánt tanúsítványfájlt.
- Válassza a Hozzáadás lehetőséget. A tanúsítvány feltöltése után megjelenik az ujjlenyomat, a kezdő dátum és a lejárati érték.
Az alkalmazásjegyzék frissítése
A tanúsítvány beszerzése után számítsa ki az alábbi értékeket:
$base64Thumbprint
- A tanúsítványkivonat base64 kódolású értéke$base64Value
- A tanúsítvány nyers adatainak base64-kódolású értéke
Adjon meg egy GUID azonosítót az alkalmazásjegyzék$keyId
() kulcsának azonosításához.
Az ügyfélalkalmazás Azure-alkalmazásregisztrációjában:
Az alkalmazásjegyzék megnyitásához válassza a Jegyzék elemet.
Cserélje le a KeyCredentials tulajdonságot az új tanúsítványadatokra az alábbi sémával.
"keyCredentials": [ { "customKeyIdentifier": "$base64Thumbprint", "keyId": "$keyid", "type": "AsymmetricX509Cert", "usage": "Verify", "value": "$base64Value" } ]
Mentse a módosításokat az alkalmazásjegyzékbe, majd töltse fel a jegyzékfájlt a Microsoft Identitásplatform.
A
keyCredentials
tulajdonság többértékű, így több tanúsítványt is feltölthet a gazdagabb kulcskezeléshez.
Ügyfélmegfelelőség használata
Az ügyfélmegfelelőségeket bárhol használhatja, ahol az ügyfél titkos kulcsait használná. Az engedélyezési kód folyamatában például átadhat egy olyan client_secret
kódot, amely igazolja, hogy a kérés az alkalmazásból érkezik. Ezt lecserélheti a paraméterekre és client_assertion_type
a client_assertion
paraméterekre.
Paraméter | Érték | Leírás |
---|---|---|
client_assertion_type |
urn:ietf:params:oauth:client-assertion-type:jwt-bearer |
Ez egy rögzített érték, amely azt jelzi, hogy tanúsítvány-hitelesítő adatot használ. |
client_assertion |
JWT |
Ez a fent létrehozott JWT. |
Következő lépések
A MSAL.NET kódtár egyetlen kódsoron kezeli ezt a forgatókönyvet .
A GitHubon Microsoft Identitásplatform kódmintát használó .NET démonkonzol-alkalmazás bemutatja, hogyan használja az alkalmazás a saját hitelesítő adatait a hitelesítéshez. Azt is bemutatja, hogyan hozhat létre önaláírt tanúsítványt a New-SelfSignedCertificate
PowerShell-parancsmaggal. A mintaadattárban található alkalmazás-létrehozási szkriptekkel tanúsítványokat hozhat létre, kiszámíthatja az ujjlenyomatot stb.