Microsoft Identitásplatform alkalmazáshitelesítési tanúsítvány hitelesítő adatai

A Microsoft Identitásplatform lehetővé teszi, hogy az alkalmazás a saját hitelesítő adatait használja a hitelesítéshez bárhol, ahol egy titkos ügyfélkód 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 OpenID Csatlakozás ügyfél-hitelesítési beállítás 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.

Paraméter Megjegyzés
alg RS256-nak kell lennie
typ JWT-nek kell lennie
x5t Base64url-kódolású SHA-1 ujjlenyomat az X.509-tanúsítvány DER-kódolásáról. Ha például egy X.509-tanúsítványkivonatot 84E05C1D98BCE3A5421D225B140B36E86A3D5534 (Hex) ad meg, a x5t jogcím a (Base64url) lesz hOBcHZi846VCHSJbFAs26Go9VTQ .

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.

Példa dekódolt JWT-állításra

{
  "alg": "RS256",
  "typ": "JWT",
  "x5t": "gx8tGysyjcRqKjFPnd7RFwvwZI0"
}
.
{
  "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": "aaaabbbb-0000-cccc-1111-dddd2222eeee"
}
.
"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:

  1. Válassza a Tanúsítványok > titkos>tanúsítványok lehetőséget.
  2. 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.
  3. 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:

  1. Az alkalmazásjegyzék megnyitásához válassza a Jegyzék elemet.

  2. 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"
        }
    ]
    
  3. 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.