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
.
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).
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 :
- Connectez-vous à votre compte Oracle Cloud Infrastructure (OCI). Sélectionnez le compartiment contenant l'instance Oracle Blockchain Platform.
- Dans la console, cliquez sur le menu Navigation, puis sur Identité, sécurité.
- Sous Identité, sélectionnez Domaines.
- Sur la page Domaines, cliquez sur Oracle Identity Cloud Service.
- 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.
- 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.
- Revenez à la page Domaines, puis cliquez sur le domaine utilisé par votre instance Oracle Blockchain Platform.
- 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 :
- Ouvrez la demande Générer un jeton d'accès pour l'utilisateur. Par défaut, les valeurs
username
etpassword
sont définies surbc-admin
. - Mettez à jour les valeurs
username
etpassword
dans les variables de collection. - Cliquez sur Générer un nouveau jeton d'accès. La fenêtre Gérer les jetons d'accès s'ouvre.
- 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 |