Améliorations apportées aux recouvrements Postman

Oracle Blockchain Platform Digital Assets Edition ajoute la prise en charge des paramètres d'approbation, des codes chaîne confidentiels et de OAuth 2.0 aux collections Postman générées par Blockchain App Builder.

Blockchain App Builder vous permet de créer une collection Postman qui inclut des exemples de charges utiles pour toutes vos API de contrôleur de code chaîne. Pour plus d'informations, reportez-vous à Génération d'une collection Postman à l'aide de l'interface de ligne de commande et à Génération d'une collection Postman à l'aide du code Visual Studio.

Oracle Blockchain Platform Digital Assets Edition étend cette fonctionnalité en incluant un paramètre supplémentaire dans la charge utile de demande pour toutes les méthodes set. Pour le code chaîne générique (par opposition au mode confidentiel), le paramètre est endorsers ou sameOrgEndorser. Le paramètre sameOrgEndorser, si true, indique que les approbations de transaction doivent provenir de la même organisation que le demandeur. Le paramètre endorsers indique la liste des homologues qui doivent approuver la transaction.

Le paramètre sameOrgEndorserOptionInWrapperAPI dans le fichier .ochain.json du code chaîne indique les API qui nécessitent une valeur sameOrgEndorser. Les API associées au paramètre sameOrgEndorserOptionInWrapperAPI ont le paramètre sameOrgEndorser défini sur true dans leurs charges utiles. Toutes les autres API incluent le paramètre endorsers au lieu du paramètre sameOrgEndorser.

Le fragment de code suivant affiche le paramètre sameOrgEndorserOptionInWrapperAPI dans le fichier .ochain.json du package de code chaîne CBDC de gros.
"sameOrgEndorserOptionInWrapperAPI": ["addConversionRate","addTokenAdmin","addTokenAuditor","approveBurn","approveMint","burnTokens","createExchangePoolAccounts","deleteHistoricalTransactions","initializeCBDCToken","initializeExchangePoolUser","issueTokens","mintWithFundingExchangePool","rejectBurn","rejectMint","removeTokenAdmin","removeTokenAuditor","requestBurn","requestMint","updateCBDCToken","updateConversionRate"]
Vous pouvez personnaliser ce paramètre selon vos besoins. Lorsque l'API de wrapper est générée, le paramètre sameOrgEndorser des API indiquées est défini sur true dans leur charge utile.

Les exemples de charge utile suivants affichent ces paramètres d'approbation.

addOrgAdmin
{
    "chaincode": "{{bc-chaincode-name}}",
    "args": [
        "addOrgAdmin",
        "{{bc-org-id}}",
        "{{bc-user-id}}"
    ],
    "timeout": {{bc-timeout}},
    "sync": {{bc-sync}},
    "endorsers": {{endorsers}}
}
addTokenAdmin
{
    "chaincode": "{{bc-chaincode-name}}",
    "args": [
        "addTokenAdmin",
        "{{bc-org-id}}",
        "{{bc-user-id}}"
    ],
    "timeout": {{bc-timeout}},
    "sync": {{bc-sync}},
    "sameOrgEndorser": true
}

Prise en charge des codes chaîne confidentiels

Les codes chaîne générés en mode confidentiel traitent les paramètres différemment du mode générique. Dans les codes chaîne confidentiels, les arguments d'API sont transmis à l'aide d'une correspondance non persistante dans la charge utile de la demande. Cela garantit que les arguments restent confidentiels et ne sont pas exposés dans les journaux. Pour plus d'informations sur les codes chaîne confidentiels, reportez-vous à Présentation des paiements confidentiels.

Toutes les méthodes get incluent un paramètre peer (non présent dans le code chaîne en mode générique).

Toutes les méthodes set incluent le paramètre endorsers, qui indique la liste des homologues qui doivent approuver la transaction. Le paramètre sameOrgEndorserOptionInWrapperAPI dans le fichier .ochain.json est défini sur un tableau vide :
"sameOrgEndorserOptionInWrapperAPI": []

Les méthodes set nécessitent un en-tête Confidential-Transaction, qui indique que le facteur d'aveuglement requis pour les transactions confidentielles est extrait de l'instance Oracle Blockchain Platform. Cet en-tête est requis dans les demandes Postman pour les transactions confidentielles.

Pour maintenir la sécurité du code chaîne en mode confidentiel, transmettez des arguments dans un objet transientMap. Vous pouvez transmettre des arguments directement dans le paramètre args dans la correspondance non persistante, comme indiqué dans l'exemple suivant pour la méthode activateAccount :

"transientMap": { "args": "[\"account_id value\"]" }

Pour la collection Postman de l'API de wrapper uniquement (et non la collection Postman générique), vous pouvez également utiliser l'indicateur transientMapArgsFlag, qui, s'il est défini sur true, transmet automatiquement tous les arguments à la mappe transitoire, comme indiqué dans l'exemple suivant pour la méthode activateAccount :

{
   "accountId": "account_id value",
   "transientMapArgsFlag": true
}

L'exemple suivant de demandes Postman affiche ces paramètres et en-têtes.

createAccount (méthode set)
curl --location 'https://test-xyz-abc.blockchain.ocp.oraclecloud.com:7443/restproxy/api/v2/channels/default/transactions' \
--header 'Content-Type: application/json' \
--header 'Confidential-Transaction: true' \
--header 'Authorization: Bearer {{access_token}}' \
--data '{
    "chaincode": "{{bc-chaincode-name}}",
    "args": [
        "activateAccount"
    ],
    "timeout": 6000,
    "sync": true,
    "endorsers": ["org1-xyz-abc.blockchain.ocp.oraclecloud.com:20009", "org2-xyz-abc.blockchain.ocp.oraclecloud.com:20009"],
    "transientMap": {
        "args": "[\"account_id value\"]"
    }
}'
getAllActiveAccounts (méthode get)
curl --location 'https://test-xyz-abc.blockchain.ocp.oraclecloud.com:7443/restproxy/api/v2/channels/default/chaincode-queries' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{access_token}}' \
--data '{
    "chaincode": "{{bc-chaincode-name}}",
    "args": [
        "getAllActiveAccounts"
    ],
    "timeout": 6000,
    "sync": true,
    "peer": "org-xyz-abc.blockchain.ocp.oraclecloud.com:20009",
    "transientMap": {
        "args": "[\"bc-org-id value\",\"bc-token-id value\"]"
    }
}'

Support OAuth 2.0

Par défaut, les collections Postman générées par Blockchain App Builder sont configurées pour l'autorisation OAuth 2.0. Vous devez fournir les valeurs suivantes dans les variables globales de la collection Postman pour activer OAuth 2.0.

client-id
ID client de l'instance Oracle Blockchain Platform.
client-secret
Clé secrète client de l'instance Oracle Blockchain Platform.
access-token-url
L'URL de jeton d'accès contient l'URL de domaine de l'instance Oracle Blockchain Platform, au format suivant : https://<domain-URL>/oauth2/v1/token

Pour extraire l'ID client, la clé secrète client et l'URL de domaine d'une instance Oracle Blockchain Platform, procédez comme suit :

  1. Connectez-vous à votre compte Oracle Cloud Infrastructure (OCI). Sélectionnez le compartiment contenant l'instance Oracle Blockchain Platform.
  2. Dans la console, cliquez sur le menu Navigation, puis sur Identité, sécurité.
  3. Sous Identité, sélectionnez Domaines.
  4. Sur la page Domaines, cliquez sur Oracle Identity Cloud Service.
  5. Dans le menu de navigation Oracle Identity Cloud Service, sélectionnez Services Oracle Cloud. Localisez votre instance Oracle Blockchain Platform et ouvrez la page de détails de cette instance.
  6. La page affichée est la page OAuth Configuration. Les champs ID client et Clé secrète client se trouvent dans la section Informations générales.
  7. Revenez à la page Domaines, puis cliquez sur le domaine utilisé par votre instance Oracle Blockchain Platform.
  8. L'URL du domaine apparaît dans les détails du domaine.

Ces variables globales sont utilisées dans un script de pré-demande pour générer un espace réservé access_token. Le script génère un jeton pour l'utilisateur bc-admin, de sorte que chaque demande soit exécutée avec l'autorisation bc-admin.

La première demande génère un jeton bc-admin à l'aide des informations d'identification indiquées. Le jeton et la valeur d'expiration sont stockés dans les variables de collecte Postman. Les jetons manquants ou expirés sont automatiquement régénérés. Si l'ID client ou la clé secrète client change, le script détecte automatiquement la modification, invalide le jeton précédent et génère un jeton avec des informations d'identification mises à jour. Si vous modifiez la valeur access_token manuellement, les demandes peuvent échouer. Si vous effacez la valeur access_token, le script génère automatiquement un autre jeton bc-admin.

Vous pouvez utiliser la demande Générer un jeton d'accès pour l'utilisateur dans la collection Postman pour générer et utiliser un jeton autre que le jeton bc-admin par défaut. Pour générer un jeton d'accès personnalisé, procédez comme suit :

  1. Ouvrez la demande Générer un jeton d'accès pour l'utilisateur. Par défaut, les valeurs username et password sont définies sur bc-admin.
  2. Mettez à jour les valeurs username et password dans les variables de collection.
  3. Cliquez sur Générer un nouveau jeton d'accès. La fenêtre Gérer les jetons d'accès s'ouvre.
  4. Mettez à jour le nom par défaut, vérifiez les autres détails, puis cliquez sur Enregistrer. Le jeton est désormais disponible et affiché dans la section Jetons disponibles de la page Autorisation.

Les collections Postman générées incluent les variables requises pour la prise en charge de OAuth 2.0, comme indiqué dans le tableau suivant.

Variable Description Valeur par défaut
client-id ID client de l'instance Oracle Blockchain Platform. Valeur client-id
client-secret Clé secrète client de l'instance Oracle Blockchain Platform. Valeur client-secret
access-token-url Adresse de jeton OAuth 2.0 du domaine de l'instance Oracle Blockchain Platform. Valeur access-token-url
access_token Jeton d'accès OAuth 2.0 généré pour l'utilisateur personnalisé ou bc-admin. Non disponible initialement ; géré par un script
access_token_expiry Heure d'expiration du jeton d'accès généré. Non disponible initialement ; géré par un script
admin_credentials_hash Valeur de hachage des informations d'identification utilisées pour la validation et la régénération de jeton. Non disponible initialement ; géré par un script