Generieren von Besitznachweistoken für rollierende Schlüssel
Sie können die Methoden addKey und removeKey verwenden, die für die Anwendung definiert sind, sowie die Ressourcen servicePrincipal für das programmgesteuerte Rollover von auslaufenden Schlüsseln.
Im Rahmen der Anforderungsüberprüfung für diese Methoden wird ein Besitznachweis eines vorhandenen Schlüssels überprüft, bevor die Methoden aufgerufen werden können. Der Nachweis wird durch ein selbstsigniertes JWT-Token dargestellt. Dieses JWT-Token muss mit dem privaten Schlüssel eines der vorhandenen gültigen Zertifikate der Anwendung signiert werden. Die Existenzdauer des Tokens sollte 10 Minuten nicht überschreiten.
Hinweis: Anwendungen, die über keine gültigen Zertifikate verfügen (es wurden noch keine Zertifikate hinzugefügt oder alle Zertifikate sind abgelaufen), können diese Dienstaktion nicht verwenden. Sie können den Vorgang Anwendung aktualisieren verwenden, um stattdessen ein Update durchzuführen.
Das Token sollte den folgenden Anforderungen enthalten:
- aud: Zielgruppe muss sein
00000002-0000-0000-c000-000000000000
. - iss: Aussteller sollte die ID des Anwendungs - oder servicePrincipal-Objekts sein, das die Anforderung initiiert.
- nbf: Nicht vor der Zeit.
- exp: Ablaufzeit sollte der Wert nbf + 10 Minuten sein.
Sie können die folgenden Codebeispiele verwenden, um dieses Besitznachweistoken zu generieren.
using System;
using System.Collections.Generic;
using System.Security.Cryptography.X509Certificates;
using Microsoft.IdentityModel.Tokens;
using Microsoft.IdentityModel.JsonWebTokens;
namespace MicrosoftIdentityPlatformProofTokenGenerator
{
class Program
{
static void Main(string[] args)
{
// Configure the following
string pfxFilePath = "<Path to your certificate file";
string password = "<Certificate password>";
string objectId = "<id of the application or servicePrincipal object>";
// Get signing certificate
X509Certificate2 signingCert = new X509Certificate2(pfxFilePath, password);
// audience
string aud = $"00000002-0000-0000-c000-000000000000";
// aud and iss are the only required claims.
var claims = new Dictionary<string, object>()
{
{ "aud", aud },
{ "iss", objectId }
};
// token validity should not be more than 10 minutes
var now = DateTime.UtcNow;
var securityTokenDescriptor = new SecurityTokenDescriptor
{
Claims = claims,
NotBefore = now,
Expires = now.AddMinutes(10),
SigningCredentials = new X509SigningCredentials(signingCert)
};
var handler = new JsonWebTokenHandler();
var x = handler.CreateToken(securityTokenDescriptor);
Console.WriteLine(x);
}
}
}
Sie können den Nachweis auch mithilfe der Signatur in Azure KeyVault generieren. Es ist wichtig zu beachten, dass das Auffüllzeichen "=" nicht in den JWT-Header und die Nutzlast eingeschlossen werden darf, da andernfalls ein Authentication_MissingOrMalformed Fehler zurückgegeben wird.
Verwandte Inhalte
Nachdem Sie nun über Ihr Token für den Besitznachweis verfügen, können Sie es für Folgendes verwenden:
- Fügen Sie einen Schlüssel hinzu , oder entfernen Sie einen Schlüssel aus Ihrer Anwendung.
- Fügen Sie einen Schlüssel hinzu, oder entfernen Sie einen Schlüssel aus Ihrem Dienstprinzipal.
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für