Configurare e configurare SharePoint Embedded
- 15 minuti
In questo esercizio si creerà un'applicazione Microsoft Entra ID, si configura SharePoint Embedded nel tenant di Microsoft 365 SharePoint e si creerà il primo tipo di contenitore e il primo contenitore.
Prerequisiti
- Postman ha installato il client desktop che ha eseguito l'accesso a un account Postman gratuito o a pagamento.
- Accesso a un account amministratore in un tenant di Microsoft 365.
- Windows PowerShell richiesta.
Registrare Microsoft Entra ID'applicazione
Le applicazioni SharePoint Embedded personalizzate usano un'applicazione Microsoft Entra ID personalizzata per autenticare e ottenere le autorizzazioni necessarie per chiamare le API Microsoft Graph e Microsoft SharePoint.
Aprire un browser e passare all'Microsoft Entra ID admin immettere. Accedere usando un account aziendale o dell'istituto di istruzione per il tenant di Microsoft 365 con diritti di amministratore globale.
Selezionare Applicazioni > di identità > Registrazioni app nel riquadro di spostamento a sinistra e quindi selezionare Nuova registrazione.
Nella pagina Registra un'applicazione, impostare i valori come segue e quindi selezionare Registra:
- Nome: app SharePoint Embedded
- Tipi di account supportati: account in qualsiasi directory organizzativa (qualsiasi tenant Microsoft Entra ID - Multi-tenant)
Dopo aver creato l'app SharePoint Embedded, Microsoft Entra ID visualizza i dettagli della nuova app. Creare un file di testo per tenere traccia di più valori necessari più avanti in questo modulo.
Copiare l'ID applicazione (client) & ID directory (tenant) dalla pagina di panoramica dell'app nel file di testo locale.
Configurare l'autenticazione
Configurare quindi le impostazioni di autenticazione dell'applicazione. Selezionare Gestisci > autenticazione nel riquadro di spostamento a sinistra e quindi selezionare Aggiungi una piattaforma.
Selezionare l'opzione Web e per URI di reindirizzamento immettere https://oauth.pstmn.io/v1/callback e selezionare Configura.
Selezionare quindi Aggiungi URI per la nuova piattaforma https://oauth.pstmn.io/v1/browser-callbackWeb e selezionare Configura.
Queste due opzioni verranno usate per autenticare e ottenere i token di accesso usando il client Postman più avanti in questo modulo.
Scorrere verso il basso fino alla sezione Concessione implicita e flussi ibridi e selezionare l'opzione Token di accesso (usati per i flussi impliciti) e quindi selezionare Salva.
Aggiungere un'altra piattaforma selezionando Aggiungi una piattaforma, un'applicazione a pagina singola e impostare l'URI di reindirizzamento su http://localhoste selezionare Configura.
Configurare le autorizzazioni API
Configurare quindi l'app con più autorizzazioni in modo che possa creare e accedere a tipi e contenitori di contenitori.
Nota
Al momento della pubblicazione, le autorizzazioni necessarie non sono ancora visibili nel selettore API nell'interfaccia di amministrazione Microsoft Entra ID. Per aggiungere le autorizzazioni, FileStorageContainer.Selected per Microsoft Graph e Container.Selected per SharePoint, le si aggiungerà direttamente al manifesto dell'app tramite gli ID di autorizzazione.
Selezionare Gestisci > manifesto nel riquadro di spostamento a sinistra. Individuare la proprietà requiredResourceAccess e modificarla in modo che sia simile al codice JSON seguente:
"requiredResourceAccess": [
{
"resourceAppId": "00000003-0000-0ff1-ce00-000000000000",
"resourceAccess": [
{
"id": "4d114b1a-3649-4764-9dfb-be1e236ff371",
"type": "Scope"
},
{
"id": "19766c1b-905b-43af-8756-06526ab42875",
"type": "Role"
}
]
},
{
"resourceAppId": "00000003-0000-0000-c000-000000000000",
"resourceAccess": [
{
"id": "085ca537-6565-41c2-aca7-db852babc212",
"type": "Scope"
},
{
"id": "40dc41bc-0f7e-42ff-89bd-d9516947e474",
"type": "Role"
}
]
}
],
Importante
Non creare oggetti duplicati con lo stesso resourceAppIdsoggetto . Aggiungere invece gli oggetti aggiuntivi all'oggetto esistente resourceAppIds. Ad esempio, se l'oggetto requiredResourceAccess è già impostato su quanto segue:
"requiredResourceAccess": [
{
"resourceAppId": "00000003-0000-0000-c000-000000000000",
"resourceAccess": [
{
"id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d",
"type": "Scope"
}
]
}
],
Aggiungere le due nuove autorizzazioni all'oggetto esistente "resourceAppId": "00000003-0000-0000-c000-000000000000" in modo che disponga ora di tre (3) autorizzazioni.
Concedere il consenso dell'amministratore alle nuove autorizzazioni
Alcune delle autorizzazioni richiedono il consenso dell'amministratore. Selezionare Autorizzazioni API nel riquadro di spostamento a sinistra, scorrere fino alla fine della pagina e selezionare il collegamento Applicazioni aziendali.
Nella pagina Autorizzazioni selezionare Concedi consenso amministratore per Contoso. Se viene richiesto di accedere, usare lo stesso account aziendale e dell'istituto di istruzione usato per accedere all'interfaccia di amministrazione Microsoft Entra ID. Nella pagina Autorizzazioni richieste selezionare Accetta per concedere il consenso amministratore alle due coppie di autorizzazioni: FileStorageContainer.Selected per Microsoft Graph e Container.Selected per SharePoint. Le due coppie rappresentano l'applicazione & opzioni delegate per ognuna delle due autorizzazioni.
Creare un segreto client
Per l'autenticazione di un'app tramite il flusso delle credenziali client OAuth2 con Microsoft Entra ID, è necessario sia l'ID client che un segreto client.
Selezionare Gestisci > certificati & segreti nel riquadro di spostamento a sinistra.
Nella sezione Segreti client, selezionare Nuovo segreto client. Aggiungere una descrizione e selezionare una durata di scadenza, quindi scegliere Aggiungi.
Dopo aver creato il segreto client, verrà visualizzato una volta, quindi assicurarsi di copiarlo come segreto client nel file di testo locale da usare in un secondo momento in questo modulo. Se non si copia questo valore, sarà necessario creare un nuovo segreto perché non è mai possibile visualizzare un segreto creato in precedenza.
Creare un certificato
A differenza di Microsoft Graph che consente l'autenticazione dell'app con un ID client e un segreto, SharePoint richiede l'autenticazione dell'app usando l'ID client e il certificato. È quindi necessario creare un certificato.
Aprire un prompt Windows PowerShell come amministratore ed eseguire lo script di PowerShell seguente. Quando richiesto, immettere il nome del certificato, ad esempio SharePoint Embedded:
$name = Read-Host -Prompt "Certificate name: "
$cert = New-SelfSignedCertificate -Subject "CN=$name" -CertStoreLocation "Cert:\CurrentUser\My" -KeyExportPolicy Exportable -KeySpec Signature -KeyLength 2048 -KeyAlgorithm RSA -HashAlgorithm SHA256
Export-Certificate -Cert $cert -FilePath "$name.cer"
# Private key to Base64
$privateKey = [System.Security.Cryptography.X509Certificates.RSACertificateExtensions]::GetRSAPrivateKey($cert)
$privateKeyBytes = $privateKey.Key.Export([System.Security.Cryptography.CngKeyBlobFormat]::Pkcs8PrivateBlob)
$privateKeyBase64 = [System.Convert]::ToBase64String($privateKeyBytes, [System.Base64FormattingOptions]::InsertLineBreaks)
# Private key file contents
$privateKeyFileContent = @"
-----BEGIN PRIVATE KEY-----
$privateKeyBase64
-----END PRIVATE KEY-----
"@
# Output to file
$privateKeyFileContent | Out-File -FilePath "$name.key" -Encoding Ascii
Lo script di PowerShell salverà il certificato (*.cer) e la chiave privata (*.key) nella cartella in cui è stato eseguito lo script di PowerShell.
Nell'interfaccia di amministrazione Microsoft Entra ID, nella pagina Certificati & segreti dell'app selezionare Certificati e quindi selezionare Carica certificato.
Caricare l'oggetto *.cer generato dallo script di PowerShell, assegnare al certificato una descrizione e quindi selezionare Aggiungi.
Dopo aver caricato il certificato, copiare l'intera identificazione personale visualizzata nel file di testo locale.
Creare un nuovo tipo di contenitore per l'app SharePoint Embedded
Il passaggio successivo consiste nel creare un tipo di contenitore per l'applicazione.
Aprire una richiesta di Windows PowerShell come amministratore.
Installare o aggiornare il modulo PowerShell di SharePoint Online
Se il modulo PowerShell di SharePoint Online non è stato installato in precedenza, installarlo eseguendo il comando seguente:
Install-Module "Microsoft.Online.SharePoint.PowerShell"
Se è installato, assicurarsi di avere installato quello più recente aggiornandolo:
Upgrade-Module "Microsoft.Online.SharePoint.PowerShell"
Nota
Se non si è certi che sia già installato, provare a eseguire il Upgrade-Module primo. Se ha esito negativo, non viene installato, quindi eseguire il Install-Module cmdlet .
Creare il tipo di contenitore
Con il modulo PowerShell di SharePoint Online più recente installato, il passaggio successivo consiste nel creare un tipo di contenitore nel tenant.
Aggiornare i valori seguenti nello script di PowerShell seguente, quindi eseguire lo script:
-
{{SPO_ADMIN_URL}}: url dell'interfaccia di amministrazione di SharePoint Online. Per ottenere questo risultato, accedere a[https://portal.microsoft.com](https://portal.microsoft.com)con l'account aziendale e dell'istituto di istruzione dell'account amministratore del tenant, selezionare Mostra tutto nella parte inferiore del riquadro di spostamento a sinistra e quindi selezionare Amministrazione Centri > SharePoint. Copiare l'URL dell'interfaccia di amministrazione di SharePoint e usare questo valore. Ad esempio, se l'ID tenant è Contoso123, l'URL amministratore saràhttps://contoso123-admin.sharepoint.com. -
{{CONTAINER_TYPE_NAME}}: selezionare un nome per il nuovo tipo di contenitore. Ad esempio, usareFirstContainerType. -
{{AZURE_ENTRA_APP_ID}}: impostare questo valore sul valore dell'ID app Microsoft Entra ID, noto anche come "ID client", creato in precedenza. Questo valore deve trovarsi nel file di testo locale.
Import-Module "Microsoft.Online.SharePoint.PowerShell"
Connect-SPOService -Url "{{SPO_ADMIN_URL}}"
New-SPOContainerType -TrialContainerType -ContainerTypeName "{{CONTAINER_TYPE_NAME}}" -OwningApplicationId "{{AZURE_ENTRA_APP_ID}}"
Lo script di PowerShell visualizzerà i dettagli per il nuovo tipo di contenitore, ad esempio:
Container Type ID:
===============================================================================
ContainerTypeId : 3a6b1fc4-0bd9-04b3-3a2a-4843fbb60914
ContainerTypeName : FirstContainerType
OwningApplicationId : 763cd5ea-ade4-4d2a-a143-29498920e18f
Classification : Standard
AzureSubscriptionId : 00000000-0000-0000-0000-000000000000
ResourceGroup :
Region :
Copiare e ContainerTypeIdContainerTypeName nel file di testo locale per usarlo in un secondo momento.
Configurare Postman per l'autenticazione con Microsoft Entra ID per ottenere token di accesso a delegati e applicazioni per Microsoft Graph e SharePoint Online
L'ultimo passaggio consiste nel registrare il nuovo tipo di contenitore creato nel tenant di Microsoft 365 per sviluppatore/provider con il tenant di utilizzo. Questa operazione viene eseguita con l'API REST di SharePoint. Per questo passaggio si userà il client Postman.
Prima di poter chiamare l'API REST di SharePoint con Postman, è necessario configurare Postman per ottenere un token di accesso.
Creare un nuovo ambiente Postman
Creare prima di tutto un nuovo ambiente Postman che archivierà le variabili di ambiente per semplificare le chiamate e centralizzare tutte le impostazioni.
In Postman selezionare Ambienti, quindi selezionare l'icona più per creare un nuovo ambiente.
Assegnare all'ambiente il nome SharePoint Embedded.
Aggiungere le variabili seguenti all'ambiente e impostare il valore Initial sulle vales dal file di testo locale. Salvare l'ambiente dopo aver aggiunto queste variabili.
| Variabile | Tipo | Note | Esempio |
|---|---|---|---|
| ClientID | default | ID client/applicazione dell'app creata in precedenza nell'interfaccia di amministrazione Microsoft Entra ID. | 763cd5ea-ade4-4d2a-a143-29498920e18f |
| ClientSecret | segreto | Segreto client dell'app creata in precedenza nell'interfaccia di amministrazione Microsoft Entra ID. | JXZ8Q........ jbvanC |
| ConsumingTenantId | default | ID tenant/directory (GUID) dell'app creata in precedenza nell'interfaccia di amministrazione Microsoft Entra ID. | 4c57ca2e-a63d-4999-9b69-610a7296e89b |
| RootSiteURL | default | URL del tenant di SharePoint Online, senza barra finale. Corrisponde all'URL dell'interfaccia di amministrazione di SharePoint Online senza la stringa -admin. | https://contoso123.sharepoint.com |
| ContainerTypeId | default | ID del tipo di contenitore creato in precedenza | 3a6b1fc4-0bd9-04b3-3a2a-4843fbb60914 |
| TenantName | default | ID del tenant di SharePoint Online. Si tratta della prima parte dell'URL dell'interfaccia di amministrazione di SharePoint Online senza la stringa -admin. | contoso123 |
| CertThumbprint | default | Identificazione personale del certificato caricato in precedenza per l'app creata nell'interfaccia di amministrazione Microsoft Entra ID. | 905EEEA21C472368A36ADEDB26CCE6E760049BC1E |
| CertPrivateKey | segreto | Chiave privata del certificato. Copiare l'intero contenuto dal file *.key generato dallo script di PowerShell eseguito in precedenza, inclusi i delimitatori -----begin e finale del certificato. | ----BEGIN PRIVATE KEY----- ... -----END PRIVATE KEY---— |
| CONTAINERID | default | Lasciare vuoto questo campo. Verrà usato in un secondo momento. |
Selezionare l'ambiente selezionandolo nel selettore a discesa in alto a destra del client Postman. L'elenco a discesa si trova appena sotto le icone degli ingranaggi e degli avvisi e sopra i pulsanti Salva e Condividi nella stessa riga delle schede.
Creare una nuova raccolta Postman
Creare quindi una nuova raccolta Postman che archivierà le richieste e otterrà i token di accesso.
In Postman selezionare Raccolte, quindi selezionare l'icona più per creare una nuova raccolta
Assegnare alla raccolta il nome SharePoint Embedded.
Nella nuova raccolta creare in set di cartelle usando il contesto della raccolta molti per archiviare le richieste per i contenitori; uno in una cartella delegata e uno in una cartella Application :
Configurare la cartella Application della raccolta Postman
Il passaggio successivo consiste nell'aggiornare l'impostazione di autenticazione della cartella Applicazione . Questa operazione richiede un po' più di lavoro perché è necessario ottenere un token solo app per chiamare Microsoft Graph. A tale scopo, si configurerà la cartella Application per scaricare uno script e archiviarlo in una variabile globale da usare in un secondo momento.
Selezionare la cartella Applicazione e quindi la scheda Autorizzazione . Impostare Type su Bearer Token (Token di connessione ) e Token (Token) su {{AppOnlyCertGraphToken}}.
Nota
Postman visualizzerà un errore di convalida come indicato di seguito. Questa operazione è prevista e può essere ignorata per il momento. Questa variabile verrà creata con uno script tra un attimo.
Selezionare la scheda Pre-request Script (Script pre-richiesta ) e immettere lo script seguente:
// download jsrsasign library and save it to a global variable
if (!pm.globals.has('jsrsasign-js')) {
pm.sendRequest(
'https://kjur.github.io/jsrsasign/jsrsasign-all-min.js',
function (err, res) {
if (err) {
throw new Error(err);
} else {
console.log('Downloaded RSA library');
pm.globals.set('jsrsasign-js', res.text());
}
}
);
}
Salvare le modifiche apportate alla raccolta.
Configurare la cartella Contenitori applicazioni della > raccolta Postman
Selezionare quindi la cartella Contenitori applicazioni > della raccolta.
Nella scheda Autorizzazione impostare Tipo su Eredita autenticazione dall'elemento padre.
Nella scheda Pre-request Script (Script pre-richiesta ) immettere lo script seguente:
async function ensureAccessToken () {
var validToken = false;
var token = pm.environment.get('AppOnlyCertGraphToken');
if (token) {
console.log('checking stored token');
try {
var tokenObj = KJUR.jws.JWS.parse(token);
var nbf = tokenObj.payloadObj.nbf;
var exp = tokenObj.payloadObj.exp;
var now = getTimeInSec();
if (nbf <= now && now < exp) {
validToken = true;
} else {
console.log("Stored access token is expired");
}
} catch (e) {
console.log("Unable to parse stored access token");
}
} else {
console.log("No access token found");
}
if (!validToken) {
acquireAccessToken();
}
}
function acquireAccessToken() {
console.log("Acquiring a new access token");
var jwt = getRequestJwt();
console.log(jwt);
var tid = pm.environment.get('ConsumingTenantId');
const tokenRequest = {
url: `https://login.microsoftonline.com/${tid}/oauth2/v2.0/token`,
method: 'POST',
header: {
'Content-Type': 'application/x-www-form-urlencoded'
},
body: {
mode: 'urlencoded',
urlencoded: [
{ key: 'client_assertion_type', value: 'urn:ietf:params:oauth:client-assertion-type:jwt-bearer' },
{ key: 'client_assertion', value: jwt },
{ key: 'client_id', value: pm.environment.get('ClientID') },
{ key: 'scope', value: 'https://graph.microsoft.com/.default' },
{ key: 'grant_type', value: 'client_credentials' }
]
}
};
pm.sendRequest(tokenRequest, (error, response) => {
if (error) {
console.log('Unable to acquire token: ' + error);
} else {
var responseJson = response.json();
var token = responseJson.access_token;
if (!token)
throw Error("Invalid or no access token received");
pm.environment.set('AppOnlyCertGraphToken', token);
}
});
}
function getRequestJwt () {
var header = {
'alg': 'RS256',
'typ': 'JWT',
'x5t': safeBase64EncodedThumbprint(pm.environment.get('CertThumbprint'))
};
var now = getTimeInSec();
var tid = pm.environment.get('ConsumingTenantId');
var payload = {
'aud': `https://login.microsoftonline.com/${tid}/oauth2/v2.0/token`,
'exp': now + 60 * 60,
'iss': pm.environment.get('ClientID'),
'jti': pm.variables.replaceIn('{{$guid}}'),
'nbf': now,
'sub': pm.environment.get('ClientID'),
'iat': now
};
var encryptedPk = pm.environment.get('CertPrivateKey');
var decryptedPk = encryptedPk;
if (pm.environment.has('CertPassword') && pm.environment.get('CertPassword') !== '') {
decryptedPk = KEYUTIL.getKey(encryptedPk, pm.environment.get('CertPassword'));
}
var sHeader = JSON.stringify(header);
var sPayload = JSON.stringify(payload);
return KJUR.jws.JWS.sign(header.alg, sHeader, sPayload, decryptedPk);
}
function getTimeInSec() {
return Math.floor(Date.now() / 1000);
}
function safeBase64EncodedThumbprint (thumbprint) {
var numCharIn128BitHexString = 128/8*2;
var numCharIn160BitHexString = 160/8*2;
var thumbprintSizes = {};
thumbprintSizes[numCharIn128BitHexString] = true;
thumbprintSizes[numCharIn160BitHexString] = true;
var thumbprintRegExp = /^[a-f\d]*$/;
var hexString = thumbprint.toLowerCase().replace(/:/g, '').replace(/ /g, '');
if (!thumbprintSizes[hexString.length] || !thumbprintRegExp.test(hexString)) {
throw 'The thumbprint does not match a known format';
}
var base64 = (Buffer.from(hexString, 'hex')).toString('base64');
return base64.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');
}
var navigator = {}; // fake a navigator object for the lib
var window = {}; // fake a window object for the lib
eval(pm.globals.get('jsrsasign-js'));
ensureAccessToken();
Nota
Questo script userà le variabili di ambiente per eseguire l'autenticazione con Microsoft Entra ID per ottenere un token solo app per Microsoft Graph e archiviarlo in una variabile nuova o esistente denominata AppOnlyCertGraphToken. Questa operazione deve essere eseguita usando uno script perché Postman non supporta il flusso di credenziali client OAuth2 usando un certificato client anziché un segreto client.
A questo punto, quando viene eseguita una richiesta dalla cartella Contenitori di applicazioni>, il pre-script della richiesta otterrà un token, aggiornare la variabile di ambiente impostata nella scheda Autorizzazione della cartella dell'applicazione padre e quindi eseguire la richiesta. Poiché la richiesta si trova nella cartella Contenitori in cui la scheda Autorizzazione è impostata per ereditare dall'elemento padre, verrà ripresa la configurazione di autenticazione reimpostata.
Salvare le modifiche apportate alla raccolta.
A questo punto, Postman è ora configurato per ottenere un token di accesso solo app per le chiamate a Microsoft Graph.
Registrare il tipo di contenitore con il tenant di utilizzo
Dopo aver configurato Postman, è ora possibile aggiungere una richiesta per registrare il tipo di contenitore con il tenant utilizzato.
In Postman selezionare Raccolte dal riquadro di spostamento a sinistra ed espandere il nodo Applicazione incorporata > di SharePoint , selezionare il menu di scelta rapida ... nel nodo Contenitori e selezionare Aggiungi richiesta.
Rinominare la richiesta in Registra tipo di contenitore.
Impostare il metodo HTTP su PUT e l'endpoint seguente:
{{RootSiteURL}}/_api/v2.1/storageContainerTypes/{{ContainerTypeId}}/applicationPermissions
Nello script di pre-richiesta aggiungere il codice seguente per ottenere un token solo app per chiamare l'API REST di SharePoint:
async function ensureAccessToken () {
var validToken = false;
var token = pm.environment.get('AppOnlyCertSPOToken');
if (token) {
console.log('checking stored token');
try {
var tokenObj = KJUR.jws.JWS.parse(token);
var nbf = tokenObj.payloadObj.nbf;
var exp = tokenObj.payloadObj.exp;
var now = getTimeInSec();
if (nbf <= now && now < exp) {
validToken = true;
} else {
console.log("Stored access token is expired");
}
} catch (e) {
console.log("Unable to parse stored access token");
}
} else {
console.log("No access token found");
}
if (!validToken) {
acquireAccessToken();
}
}
function acquireAccessToken() {
console.log("Acquiring a new access token");
var jwt = getRequestJwt();
console.log(jwt);
var tid = pm.environment.get('ConsumingTenantId');
const tokenRequest = {
url: `https://login.microsoftonline.com/${tid}/oauth2/v2.0/token`,
method: 'POST',
header: {
'Content-Type': 'application/x-www-form-urlencoded'
},
body: {
mode: 'urlencoded',
urlencoded: [
{ key: 'client_assertion_type', value: 'urn:ietf:params:oauth:client-assertion-type:jwt-bearer' },
{ key: 'client_assertion', value: jwt },
{ key: 'client_id', value: pm.environment.get('ClientID') },
{ key: 'scope', value: pm.environment.get('RootSiteURL') + '/.default' },
{ key: 'grant_type', value: 'client_credentials' }
]
}
};
pm.sendRequest(tokenRequest, (error, response) => {
if (error) {
console.log('Unable to acquire token: ' + error);
} else {
var responseJson = response.json();
var token = responseJson.access_token;
pm.environment.set('AppOnlyCertSPOToken', token);
}
});
}
function getRequestJwt () {
var header = {
'alg': 'RS256',
'typ': 'JWT',
'x5t': safeBase64EncodedThumbprint(pm.environment.get('CertThumbprint'))
};
var now = getTimeInSec();
var tid = pm.environment.get('ConsumingTenantId');
var payload = {
'aud': `https://login.microsoftonline.com/${tid}/oauth2/v2.0/token`,
'exp': now + 60 * 60,
'iss': pm.environment.get('ClientID'),
'jti': pm.variables.replaceIn('{{$guid}}'),
'nbf': now,
'sub': pm.environment.get('ClientID'),
'iat': now
};
var encryptedPk = pm.environment.get('CertPrivateKey');
var decryptedPk = encryptedPk;
if (pm.environment.has('CertPassword') && pm.environment.get('CertPassword') !== '') {
decryptedPk = KEYUTIL.getKey(encryptedPk, pm.environment.get('CertPassword'));
}
var sHeader = JSON.stringify(header);
var sPayload = JSON.stringify(payload);
return KJUR.jws.JWS.sign(header.alg, sHeader, sPayload, decryptedPk);
}
function getTimeInSec() {
return Math.floor(Date.now() / 1000);
}
function safeBase64EncodedThumbprint (thumbprint) {
var numCharIn128BitHexString = 128/8*2;
var numCharIn160BitHexString = 160/8*2;
var thumbprintSizes = {};
thumbprintSizes[numCharIn128BitHexString] = true;
thumbprintSizes[numCharIn160BitHexString] = true;
var thumbprintRegExp = /^[a-f\d]*$/;
var hexString = thumbprint.toLowerCase().replace(/:/g, '').replace(/ /g, '');
if (!thumbprintSizes[hexString.length] || !thumbprintRegExp.test(hexString)) {
throw 'The thumbprint does not match a known format';
}
var base64 = (Buffer.from(hexString, 'hex')).toString('base64');
return base64.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');
}
var navigator = {}; // fake a navigator object for the lib
var window = {}; // fake a window object for the lib
eval(pm.globals.get('jsrsasign-js'));
ensureAccessToken();
Nella scheda Autorizzazione impostare Type (Tipo) su Bearer Token (Token di connessione ) e Token (Token) su {{AppOnlyCertSPOToken}}. Questa variabile token viene creata e impostata nello script di pre-richiesta.
Nella scheda Corpo selezionare il tipo non elaborato , impostare il tipo di dati su JSON e aggiungere il codice seguente al corpo:
{
"value": [
{
"appId": "{{ClientID}}",
"delegated": ["full"],
"appOnly": ["full"]
}
]
}
Selezionare il pulsante Invia per eseguire la richiesta Registra tipo di contenitore . Postman visualizzerà la risposta sotto la richiesta:
Riepilogo
In questo esercizio è stata creata un'applicazione Microsoft Entra ID, è stato configurato SharePoint Embedded nel tenant di Microsoft 365 SharePoint e è stato creato il primo tipo di contenitore usando PowerShell, una nuova raccolta Postman e un ambiente associato per inviare richieste alle API REST di Microsoft Graph e SharePoint.