servicePrincipal: addKey
Artikel
07/18/2022
6 Minuten Lesedauer
3 Mitwirkende
In diesem Artikel
Namespace: microsoft.graph
Fügt einem servicePrincipal eine Schlüsselanmeldeinformation hinzu. Diese Methode kann zusammen mit "removeKey " von einem ServicePrincipal verwendet werden, um das Rollen der ablaufenden Schlüssel zu automatisieren.
Im Rahmen der Anforderungsüberprüfung für diese Methode wird ein Besitznachweis für einen vorhandenen Schlüssel überprüft, bevor die Aktion ausgeführt werden kann.
ServicePrincipals, die keine gültigen Zertifikate besitzen (d. h.: es wurden noch keine Zertifikate hinzugefügt, oder alle Zertifikate sind abgelaufen), können diese Dienstaktion nicht verwenden. Update servicePrincipal kann stattdessen zum Ausführen einer Aktualisierung verwendet werden.
Berechtigungen
Berechtigungstyp
Berechtigungen (von der Berechtigung mit den wenigsten Rechten zu der mit den meisten Rechten)
Delegiert (Geschäfts-, Schul- oder Unikonto)
Application.ReadWrite.All, Directory.ReadWrite.All
Delegiert (persönliches Microsoft-Konto)
Keine.
Anwendung
Application.ReadWrite.OwnedBy, Application.ReadWrite.All, Directory.ReadWrite.All
HTTP-Anforderung
POST /servicePrincipals/{id}/addKey
Name
Beschreibung
Authorization
Bearer {token}. Erforderlich.
Content-Type
application/json. Erforderlich.
Anforderungstext
Geben Sie im Anforderungstext die folgenden erforderlichen Eigenschaften an.
Eigenschaft
Typ
Beschreibung
keyCredential
keyCredential
Die neuen servicePrincipal-Schlüsselanmeldeinformationen, die hinzugefügt werden sollen. Typ , Verwendung und Schlüssel sind erforderliche Eigenschaften für diese Verwendung. Unterstützte Schlüsseltypen sind:AsymmetricX509Cert: Die Verwendung muss .VerifyX509CertAndPassword: Die Verwendung muss Sign
passwordCredential
passwordCredential
Es muss nur secretText festgelegt werden, der das Kennwort für den Schlüssel enthalten sollte. Diese Eigenschaft ist nur für Schlüssel vom Typ X509CertAndPassworderforderlich. Legen Sie es auf "andernfalls" fest null .
Beweis
Zeichenfolge
Ein selbstsigniertes JWT-Token, das als Besitznachweis für die vorhandenen Schlüssel verwendet wird. Dieses JWT-Token muss mithilfe des privaten Schlüssels eines der vorhandenen gültigen Zertifikate von servicePrincipal signiert werden. Das Token sollte den folgenden Anforderungen enthalten:aud – Benutzergruppe muss 00000002-0000-0000-c000-000000000000 sein.iss – Der Aussteller muss die ID des Dienstprinzipals sein, der den Aufruf durchführt.nbf – Nicht vor der Zeit.exp – Ablaufzeit sollte „nbf“ + 10 Minuten sein. Hier ist ein Codebeispiel , das verwendet werden kann, um dieses Besitznachweistoken zu generieren.
Antwort
Bei erfolgreicher Ausführung gibt die Methode den 200 OK Antwortcode und ein neues keyCredential-Objekt im Antworttext zurück.
Beispiele
Beispiel 1: Hinzufügen einer neuen Schlüsselanmeldeinformationen zu einem servicePrincipal
Anforderung
Nachfolgend sehen Sie ein Beispiel der Anforderung.
POST https://graph.microsoft.com/v1.0/servicePrincipals/{id}/addKey
Content-type: application/json
{
"keyCredential": {
"type": "AsymmetricX509Cert",
"usage": "Verify",
"key": "MIIDYDCCAki..."
},
"passwordCredential": null,
"proof":"eyJ0eXAiOiJ..."
}
GraphServiceClient graphClient = new GraphServiceClient( authProvider );
var keyCredential = new KeyCredential
{
Type = "AsymmetricX509Cert",
Usage = "Verify",
Key = Convert.FromBase64String("MIIDYDCCAki...")
};
PasswordCredential passwordCredential = null;
var proof = "eyJ0eXAiOiJ...";
await graphClient.ServicePrincipals["{servicePrincipal-id}"]
.AddKey(keyCredential,proof,passwordCredential)
.Request()
.PostAsync();
Ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider-Instanz finden Sie in der SDK-Dokumentation .
const options = {
authProvider,
};
const client = Client.init(options);
const keyCredential = {
keyCredential: {
type: 'AsymmetricX509Cert',
usage: 'Verify',
key: 'MIIDYDCCAki...'
},
passwordCredential: null,
proof: 'eyJ0eXAiOiJ...'
};
await client.api('/servicePrincipals/{id}/addKey')
.post(keyCredential);
Ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider-Instanz finden Sie in der SDK-Dokumentation .
MSHTTPClient *httpClient = [MSClientFactory createHTTPClientWithAuthenticationProvider:authenticationProvider];
NSString *MSGraphBaseURL = @"https://graph.microsoft.com/v1.0/";
NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[MSGraphBaseURL stringByAppendingString:@"/servicePrincipals/{id}/addKey"]]];
[urlRequest setHTTPMethod:@"POST"];
[urlRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
NSMutableDictionary *payloadDictionary = [[NSMutableDictionary alloc] init];
MSGraphKeyCredential *keyCredential = [[MSGraphKeyCredential alloc] init];
[keyCredential setType:@"AsymmetricX509Cert"];
[keyCredential setUsage:@"Verify"];
[keyCredential setKey:@"MIIDYDCCAki..."];
payloadDictionary[@"keyCredential"] = keyCredential;
payloadDictionary[@"passwordCredential"] = passwordCredential;
NSString *proof = @"eyJ0eXAiOiJ...";
payloadDictionary[@"proof"] = proof;
NSData *data = [NSJSONSerialization dataWithJSONObject:payloadDictionary options:kNilOptions error:&error];
[urlRequest setHTTPBody:data];
MSURLSessionDataTask *meDataTask = [httpClient dataTaskWithRequest:urlRequest
completionHandler: ^(NSData *data, NSURLResponse *response, NSError *nserror) {
//Request Completed
}];
[meDataTask execute];
Ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider-Instanz finden Sie in der SDK-Dokumentation .
GraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider( authProvider ).buildClient();
KeyCredential keyCredential = new KeyCredential();
keyCredential.type = "AsymmetricX509Cert";
keyCredential.usage = "Verify";
keyCredential.key = Base64.getDecoder().decode("MIIDYDCCAki...");
String proof = "eyJ0eXAiOiJ...";
graphClient.servicePrincipals("{id}")
.addKey(ServicePrincipalAddKeyParameterSet
.newBuilder()
.withKeyCredential(keyCredential)
.withPasswordCredential(passwordCredential)
.withProof(proof)
.build())
.buildRequest()
.post();
Ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider-Instanz finden Sie in der SDK-Dokumentation .
//THE GO SDK IS IN PREVIEW. NON-PRODUCTION USE ONLY
graphClient := msgraphsdk.NewGraphServiceClient(requestAdapter)
requestBody := msgraphsdk.New()
keyCredential := msgraphsdk.NewKeyCredential()
requestBody.SetKeyCredential(keyCredential)
type := "AsymmetricX509Cert"
keyCredential.SetType(&type)
usage := "Verify"
keyCredential.SetUsage(&usage)
key := []byte("MIIDYDCCAki...")
keyCredential.SetKey(&key)
requestBody.SetPasswordCredential(nil)
proof := "eyJ0eXAiOiJ..."
requestBody.SetProof(&proof)
servicePrincipalId := "servicePrincipal-id"
result, err := graphClient.ServicePrincipalsById(&servicePrincipalId).AddKey(servicePrincipal-id).Post(requestBody)
Ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider-Instanz finden Sie in der SDK-Dokumentation .
Import-Module Microsoft.Graph.Applications
$params = @{
KeyCredential = @{
Type = "AsymmetricX509Cert"
Usage = "Verify"
Key = [System.Text.Encoding]::ASCII.GetBytes("MIIDYDCCAki...")
}
PasswordCredential = $null
Proof = "eyJ0eXAiOiJ..."
}
Add-MgServicePrincipalKey -ServicePrincipalId $servicePrincipalId -BodyParameter $params
Ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider-Instanz finden Sie in der SDK-Dokumentation .
Antwort
Nachfolgend sehen Sie ein Beispiel der Antwort.
HTTP/1.1 200 OK
Content-Type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#microsoft.graph.keyCredential"
}
Beispiel 2: Hinzufügen von Schlüsselanmeldeinformationen und einem zugeordneten Kennwort für den Schlüssel
Anforderung
Nachfolgend sehen Sie ein Beispiel der Anforderung.
POST https://graph.microsoft.com/v1.0/servicePrincipals/{id}/addKey
Content-type: application/json
{
"keyCredential": {
"type": "X509CertAndPassword",
"usage": "Sign",
"key": "MIIDYDCCAki..."
},
"passwordCredential": {
"secretText": "MKTr0w1..."
},
"proof":"eyJ0eXAiOiJ..."
}
GraphServiceClient graphClient = new GraphServiceClient( authProvider );
var keyCredential = new KeyCredential
{
Type = "X509CertAndPassword",
Usage = "Sign",
Key = Convert.FromBase64String("MIIDYDCCAki...")
};
var passwordCredential = new PasswordCredential
{
SecretText = "MKTr0w1..."
};
var proof = "eyJ0eXAiOiJ...";
await graphClient.ServicePrincipals["{servicePrincipal-id}"]
.AddKey(keyCredential,proof,passwordCredential)
.Request()
.PostAsync();
Ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider-Instanz finden Sie in der SDK-Dokumentation .
const options = {
authProvider,
};
const client = Client.init(options);
const keyCredential = {
keyCredential: {
type: 'X509CertAndPassword',
usage: 'Sign',
key: 'MIIDYDCCAki...'
},
passwordCredential: {
secretText: 'MKTr0w1...'
},
proof: 'eyJ0eXAiOiJ...'
};
await client.api('/servicePrincipals/{id}/addKey')
.post(keyCredential);
Ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider-Instanz finden Sie in der SDK-Dokumentation .
MSHTTPClient *httpClient = [MSClientFactory createHTTPClientWithAuthenticationProvider:authenticationProvider];
NSString *MSGraphBaseURL = @"https://graph.microsoft.com/v1.0/";
NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[MSGraphBaseURL stringByAppendingString:@"/servicePrincipals/{id}/addKey"]]];
[urlRequest setHTTPMethod:@"POST"];
[urlRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
NSMutableDictionary *payloadDictionary = [[NSMutableDictionary alloc] init];
MSGraphKeyCredential *keyCredential = [[MSGraphKeyCredential alloc] init];
[keyCredential setType:@"X509CertAndPassword"];
[keyCredential setUsage:@"Sign"];
[keyCredential setKey:@"MIIDYDCCAki..."];
payloadDictionary[@"keyCredential"] = keyCredential;
MSGraphPasswordCredential *passwordCredential = [[MSGraphPasswordCredential alloc] init];
[passwordCredential setSecretText:@"MKTr0w1..."];
payloadDictionary[@"passwordCredential"] = passwordCredential;
NSString *proof = @"eyJ0eXAiOiJ...";
payloadDictionary[@"proof"] = proof;
NSData *data = [NSJSONSerialization dataWithJSONObject:payloadDictionary options:kNilOptions error:&error];
[urlRequest setHTTPBody:data];
MSURLSessionDataTask *meDataTask = [httpClient dataTaskWithRequest:urlRequest
completionHandler: ^(NSData *data, NSURLResponse *response, NSError *nserror) {
//Request Completed
}];
[meDataTask execute];
Ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider-Instanz finden Sie in der SDK-Dokumentation .
GraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider( authProvider ).buildClient();
KeyCredential keyCredential = new KeyCredential();
keyCredential.type = "X509CertAndPassword";
keyCredential.usage = "Sign";
keyCredential.key = Base64.getDecoder().decode("MIIDYDCCAki...");
PasswordCredential passwordCredential = new PasswordCredential();
passwordCredential.secretText = "MKTr0w1...";
String proof = "eyJ0eXAiOiJ...";
graphClient.servicePrincipals("{id}")
.addKey(ServicePrincipalAddKeyParameterSet
.newBuilder()
.withKeyCredential(keyCredential)
.withPasswordCredential(passwordCredential)
.withProof(proof)
.build())
.buildRequest()
.post();
Ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider-Instanz finden Sie in der SDK-Dokumentation .
//THE GO SDK IS IN PREVIEW. NON-PRODUCTION USE ONLY
graphClient := msgraphsdk.NewGraphServiceClient(requestAdapter)
requestBody := msgraphsdk.New()
keyCredential := msgraphsdk.NewKeyCredential()
requestBody.SetKeyCredential(keyCredential)
type := "X509CertAndPassword"
keyCredential.SetType(&type)
usage := "Sign"
keyCredential.SetUsage(&usage)
key := []byte("MIIDYDCCAki...")
keyCredential.SetKey(&key)
passwordCredential := msgraphsdk.NewPasswordCredential()
requestBody.SetPasswordCredential(passwordCredential)
secretText := "MKTr0w1..."
passwordCredential.SetSecretText(&secretText)
proof := "eyJ0eXAiOiJ..."
requestBody.SetProof(&proof)
servicePrincipalId := "servicePrincipal-id"
result, err := graphClient.ServicePrincipalsById(&servicePrincipalId).AddKey(servicePrincipal-id).Post(requestBody)
Ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider-Instanz finden Sie in der SDK-Dokumentation .
Import-Module Microsoft.Graph.Applications
$params = @{
KeyCredential = @{
Type = "X509CertAndPassword"
Usage = "Sign"
Key = [System.Text.Encoding]::ASCII.GetBytes("MIIDYDCCAki...")
}
PasswordCredential = @{
SecretText = "MKTr0w1..."
}
Proof = "eyJ0eXAiOiJ..."
}
Add-MgServicePrincipalKey -ServicePrincipalId $servicePrincipalId -BodyParameter $params
Ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider-Instanz finden Sie in der SDK-Dokumentation .
Antwort
Nachfolgend sehen Sie ein Beispiel der Antwort.
HTTP/1.1 200 OK
Content-Type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#microsoft.graph.keyCredential"
}