{"id":1139,"date":"2012-03-08T21:49:09","date_gmt":"2012-03-08T19:49:09","guid":{"rendered":"http:\/\/www.ora-solutions.net\/web\/?p=1139"},"modified":"2012-03-08T21:49:09","modified_gmt":"2012-03-08T19:49:09","slug":"no-more-cleartext-passwords-in-scripts-oracle-secure-external-password-store-seps","status":"publish","type":"post","link":"https:\/\/www.ora-solutions.net\/web\/2012\/03\/08\/no-more-cleartext-passwords-in-scripts-oracle-secure-external-password-store-seps\/","title":{"rendered":"No more cleartext-passwords in Scripts &#8211; Oracle Secure External Password Store (SEPS)"},"content":{"rendered":"<p>Gone are the day when cleartext passwords had to be stored in scripts for Oracle database access. The solution to this requirement is &#8220;Oracle Secure External Password Store (SEPS)&#8221;. This article will give a short introduction and a practical example of the solution.<\/p>\n<h1>Key facts:<\/h1>\n<p><\/p>\n<div>\n<ul>\n<li>\n<div>no Advanced Security Option (License) necessary<\/div>\n<\/li>\n<li>\n<div><strong>every unix-account, who has access to the wallet can use it to log on to the contained databases without a password! Therefore prevent other unix-accounts from accessing your wallet!<\/strong> (chmod, chown)<\/div>\n<\/li>\n<\/ul>\n<\/div>\n<p><\/p>\n<h1>Installation<\/h1>\n<p><\/p>\n<ul>\n<li>\n<div><strong>Oracle Client<\/strong>: Unix-Account, who wishes to connect to the database without providing a password needs to have an Oracle Client installed. Actually it can be an Instant Client, however the Instant Client does not have the Oracle Wallet Manager (owm).<\/div>\n<\/li>\n<p><\/p>\n<li>\n<div><strong>TNS_ADMIN<\/strong>: If the installed Oracle-Client is also used by other unix-accounts, you have to set Environment-Variable TNS_ADMIN to point to a dedicated destination for sqlnet.ora<\/div>\n<\/li>\n<\/ul>\n<pre lang=\"LANGUAGE\">echo \"export TNS_ADMIN=\/home\/techuser\/oracle\/network\/admin\" &gt;&gt; ~\/.bash_profile<\/pre>\n<ul>\n<\/p>\n<li>\n<div><strong>sqlnet.ora<\/strong> in  $TNS_ADMIN: In this file, the path to your personal wallet is defined:<\/div>\n<\/li>\n<\/ul>\n<pre lang=\"LANGUAGE\">WALLET_LOCATION =\r\n(\r\n   SOURCE =\r\n      (METHOD = FILE)\r\n      (METHOD_DATA =\r\n         (DIRECTORY = \/home\/techuser\/oracle\/network\/wallet)\r\n      )\r\n)\r\nSQLNET.WALLET_OVERRIDE = TRUE\r\nSSL_CLIENT_AUTHENTICATION = FALSE<\/pre>\n<p><strong>Be aware that sqlnet.ora has very sensitive formatting! Blank at the beginning of the line means that previous line is continued. If the first character of a line is not a blank, then it is supposed to be new directive. Therefore note the identation of wallet_location parameter.<br \/>\n<\/strong><\/p>\n<ul>\n<\/p>\n<li>\n<div><strong>tnsnames.ora<\/strong> in  $TNS_ADMIN: This file contains TNS Aliases, which are used to connect to database. If the unix-account needs to\u00a0 connect to one database but with 2 different database accounts, then it needs to use 2 distinct tns aliases!<\/div>\n<\/li>\n<p><\/p>\n<li>\n<div><strong>Creation of Wallet<\/strong>: When the wallet is created, a wallet password is requested. This password is needed when viewing, adding, modifying and deleting wallet entries.<\/div>\n<\/li>\n<\/ul>\n<pre lang=\"LANGUAGE\">mkstore \u2013wrl \/home\/techuser\/oracle\/network\/wallet \u2013create<\/pre>\n<h1>Management of Credentials in Wallet:<\/h1>\n<div>\n<ul>\n<\/p>\n<li>\n<div>Adding Credentials to Wallet:<\/div>\n<\/li>\n<\/ul>\n<pre lang=\"LANGUAGE\">mkstore -wrl \/home\/techuser\/oracle\/network\/wallet \\\r\n-createCredential<\/pre>\n<ul>\n<li>\n<div>Removal of Credentials from wallet:<\/div>\n<\/li>\n<\/ul>\n<p><\/p>\n<pre lang=\"LANGUAGE\">mkstore -wrl \/home\/techuser\/oracle\/network\/wallet \\\r\n-deleteCredential TNSAlias<\/pre>\n<p><\/p>\n<ul>\n<li>\n<div>Modification of Credential in wallet<\/div>\n<\/li>\n<\/ul>\n<p><\/p>\n<pre lang=\"LANGUAGE\">mkstore -wrl \/home\/techuser\/oracle\/network\/wallet \\\r\n-modifyCredential N102 scott newpassword\r\nEnter password:\r\nModify credential Modify 1\r\n\r\nmkstore -wrl \/home\/techuser\/oracle\/network\/wallet \\\r\n-modifyEntry oracle.security.client.password1 newpass\r\nEnter password:<\/pre>\n<p><\/p>\n<ul>\n<li>\n<div>Viewing of Credentials in Wallet<\/div>\n<\/li>\n<\/ul>\n<pre lang=\"LANGUAGE\">mkstore -wrl \/home\/techuser\/oracle\/network\/wallet -list\r\n\r\nOracle Secret Store entries:\r\noracle.security.client.connect_string1\r\noracle.security.client.password1\r\noracle.security.client.username\r\n\r\nmkstore -wrl \/home\/techuser\/oracle\/network\/wallet \\\r\n-viewEntry oracle.security.client.connect_string1\r\nEnter password: \r\n\r\noracle.security.client.connect_string1 = N102\r\n\r\nmkstore -wrl \/home\/techuser\/oracle\/network\/wallet -viewEntry oracle.security.client.username1\r\nEnter password:\r\noracle.security.client.username1 = scott\r\n\r\nmkstore -wrl \/home\/techuser\/oracle\/network\/wallet -viewEntry oracle.security.client.password1\r\nEnter password:\r\noracle.security.client.password1 = tiger<\/pre>\n<\/div>\n<p><\/p>\n<ul>\n<li>\n<div>Changing Wallet Password <\/div>\n<\/li>\n<\/ul>\n<div>\n<pre lang=\"LANGUAGE\">orapki wallet change_pwd -wallet \/home\/techuser\/oracle\/network\/wallet \\\r\n-oldpwd welcome1 -newpwd welcome2\r\n<\/pre>\n<\/div>\n<p><\/p>\n<h1>Example:<\/h1>\n<pre lang=\"SQL\">DBs:\r\n\r\nTESTDB1 (11.2.0.3)\r\nTESTDB2 (11.2.0.3)\r\n\r\nTechuser:\r\ntechuser1 - uses RDBMS Server Home als Client\r\ntechuser2 - uses Oracle Instant Client\r\n\r\nRequirements:\r\ntechuser1 should be able to connect to ro_user@TESTDB2 and rw_user@TESTDB2\r\ntechuser2 should be able to connect to ro_user@TESTDB2 and rw_user@TESTDB1 \r\n\r\nPreparations:\r\n\r\nas oracle:\r\n. TESTDB2.env\r\n\r\nsqlplus \"\/as sysdba\"\r\n\r\nSQL&gt; grant create session to ro_user identified by ro_password;\r\n\r\nGrant succeeded.\r\n\r\nSQL&gt; grant create session to rw_user identified by rw_password;\r\n\r\nGrant succeeded.\r\n\r\n. TESTDB1.env\r\n\r\nsqlplus \"\/as sysdba\"\r\n\r\nSQL&gt; grant create session to rw_user identified by rw_password;\r\n\r\nGrant succeeded.\r\n\r\nas root:\r\nuseradd techuser1\r\nuseradd techuser2\r\n\r\nsu - techuser1\r\nexport ORACLE_HOME=\/u01\/app\/oracle\/product\/11.2.0\/dbhome_1\r\nexport PATH=$ORACLE_HOME\/bin:$PATH\r\nexport TNS_ADMIN=\/home\/techuser1\/oracle\/network\/admin\r\nmkdir -p oracle\/network\/admin oracle\/network\/wallet\r\n\r\nvi $TNS_ADMIN\/sqlnet.ora:\r\nWALLET_LOCATION =\r\n   (SOURCE =\r\n      (METHOD = FILE)\r\n         (METHOD_DATA=\r\n           (DIRECTORY=\/home\/techuser1\/oracle\/network\/wallet)\r\n         )\r\n    )\r\n\r\nSQLNET.WALLET_OVERRIDE=TRUE\r\nSSL_CLIENT_AUTHENTICATION=FALSE\r\n\r\nvi $TNS_ADMIN\/tnsnames.ora:\r\n\r\nTESTDB2_ro =\r\n  (DESCRIPTION =\r\n    (ADDRESS = (PROTOCOL = TCP)(HOST = oravm1.intra)(PORT = 1522))\r\n    (CONNECT_DATA =\r\n      (SERVER = DEDICATED)\r\n      (SERVICE_NAME = TESTDB2_SITE1)\r\n    )\r\n  )\r\n\r\nTESTDB2_rw =\r\n  (DESCRIPTION =\r\n    (ADDRESS = (PROTOCOL = TCP)(HOST = oravm1.intra)(PORT = 1522))\r\n    (CONNECT_DATA =\r\n      (SERVER = DEDICATED)\r\n      (SERVICE_NAME = TESTDB2_SITE1)\r\n    )\r\n  )\r\n\r\n[techuser1@oravm1 admin]$ tnsping TESTDB2_ro\r\n\r\nTNS Ping Utility for Linux: Version 11.2.0.3.0 - Production on 01-MAR-2012 11:13:34\r\n\r\nCopyright (c) 1997, 2011, Oracle.  All rights reserved.\r\n\r\nUsed parameter files:\r\n\/home\/techuser1\/oracle\/network\/admin\/sqlnet.ora\r\n\r\nUsed TNSNAMES adapter to resolve the alias\r\nAttempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = oravm1.intra)\r\n(PORT = 1522)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = TESTDB2_SITE1)))\r\nOK (0 msec)\r\n[techuser1@oravm1 admin]$ tnsping TESTDB2_rw\r\n\r\nTNS Ping Utility for Linux: Version 11.2.0.3.0 - Production on 01-MAR-2012 11:13:36\r\n\r\nCopyright (c) 1997, 2011, Oracle.  All rights reserved.\r\n\r\nUsed parameter files:\r\n\/home\/techuser1\/oracle\/network\/admin\/sqlnet.ora\r\n\r\nUsed TNSNAMES adapter to resolve the alias\r\nAttempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = oravm1.intra)\r\n(PORT = 1522)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = TESTDB2_SITE1)))\r\nOK (10 msec)\r\n\r\n[techuser1@oravm1 admin]$ mkstore -wrl \/home\/techuser1\/oracle\/network\/wallet -create\r\nOracle Secret Store Tool : Version 11.2.0.3.0 - Production\r\nCopyright (c) 2004, 2011, Oracle and\/or its affiliates. All rights reserved.\r\n\r\nEnter password:\r\nEnter password again:\r\n\r\nmkstore -wrl \/home\/techuser1\/oracle\/network\/wallet \\\r\n -createCredential TESTDB2_rw rw_user rw_password\r\n\r\nmkstore -wrl \/home\/techuser1\/oracle\/network\/wallet \\\r\n-createCredential TESTDB2_ro ro_user ro_password\r\n\r\n[techuser1@oravm1 admin]$ mkstore -wrl \/home\/techuser1\/oracle\/network\/wallet \\\r\n-createCredential TESTDB2_rw rw_user rw_password\r\nOracle Secret Store Tool : Version 11.2.0.3.0 - Production\r\nCopyright (c) 2004, 2011, Oracle and\/or its affiliates. All rights reserved.\r\n\r\nEnter wallet password:\r\nCreate credential oracle.security.client.connect_string1\r\n\r\n[techuser1@oravm1 admin]$ mkstore -wrl \/home\/techuser1\/oracle\/network\/wallet \\\r\n -createCredential TESTDB2_ro ro_user ro_password\r\nOracle Secret Store Tool : Version 11.2.0.3.0 - Production\r\nCopyright (c) 2004, 2011, Oracle and\/or its affiliates. All rights reserved.\r\n\r\nEnter wallet password:\r\nCreate credential oracle.security.client.connect_string2\r\n\r\n[techuser1@oravm1 admin]$ sqlplus \/@TESTDB2_rw\r\nSQL*Plus: Release 11.2.0.3.0 Production on Thu Mar 1 11:19:40 2012\r\n\r\nCopyright (c) 1982, 2011, Oracle.  All rights reserved.\r\n\r\nConnected to:\r\nOracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production\r\nWith the Partitioning, OLAP, Data Mining and Real Application Testing options\r\n\r\nSQL&gt; show user\r\nUSER is \"RW_USER\"\r\nSQL&gt; quit\r\nDisconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production\r\nWith the Partitioning, OLAP, Data Mining and Real Application Testing options\r\n[techuser1@oravm1 admin]$ sqlplus \/@TESTDB2_ro\r\n\r\nSQL*Plus: Release 11.2.0.3.0 Production on Thu Mar 1 11:19:45 2012\r\n\r\nCopyright (c) 1982, 2011, Oracle.  All rights reserved.\r\n\r\nConnected to:\r\nOracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production\r\nWith the Partitioning, OLAP, Data Mining and Real Application Testing options\r\n\r\nSQL&gt; show user\r\nUSER is \"RO_USER\"\r\n\r\n[techuser1@oravm1 wallet]$ ls -la \/home\/techuser1\/oracle\/network\/wallet\/\r\ntotal 24\r\ndrwxrwxr-x 2 techuser1 techuser1 4096 Mar  1 11:15 .\r\ndrwxrwxr-x 4 techuser1 techuser1 4096 Mar  1 11:01 ..\r\n-rw------- 1 techuser1 techuser1 4341 Mar  1 11:17 cwallet.sso\r\n-rw------- 1 techuser1 techuser1 4264 Mar  1 11:17 ewallet.p12\r\n[techuser1@oravm1 wallet]$\r\n\r\ntechuser2 with instant client:\r\n\r\nunzip instantclient-basic-linux.x64-11.2.0.3.0.zip\r\nunzip instantclient-sqlplus-linux.x64-11.2.0.3.0.zip\r\n\r\nexport ORACLE_HOME=\/home\/techuser2\/instantclient_11_2\r\nexport PATH=$ORACLE_HOME:$PATH\r\nexport TNS_ADMIN=\/home\/techuser2\/oracle\/network\/admin\r\nexport LD_LIBRARY_PATH=$ORACLE_HOME:$LD_LIBRARY_PATH\r\n\r\n[techuser2@oravm1 ~]$ mkdir -p \/home\/techuser2\/oracle\/network\/admin\r\n[techuser2@oravm1 ~]$ mkdir -p \/home\/techuser2\/oracle\/network\/wallet\r\n\r\nvi $TNS_ADMIN\/sqlnet.ora\r\n\r\nWALLET_LOCATION =\r\n   (SOURCE =\r\n      (METHOD = FILE)\r\n         (METHOD_DATA=\r\n           (DIRECTORY=\/home\/techuser2\/oracle\/network\/wallet)\r\n         )\r\n    )\r\n\r\nSQLNET.WALLET_OVERRIDE=TRUE\r\nSSL_CLIENT_AUTHENTICATION=FALSE\r\n\r\nvi $TNS_ADMIN\/tnsnames.ora\r\n\r\nTESTDB2_ro =\r\n  (DESCRIPTION =\r\n    (ADDRESS = (PROTOCOL = TCP)(HOST = oravm1.intra)(PORT = 1522))\r\n    (CONNECT_DATA =\r\n      (SERVER = DEDICATED)\r\n      (SERVICE_NAME = TESTDB2_SITE1)\r\n    )\r\n  )\r\n\r\nTESTDB1 =\r\n  (DESCRIPTION =\r\n    (ADDRESS = (PROTOCOL = TCP)(HOST = oravm1.intra)(PORT = 1522))\r\n    (CONNECT_DATA =\r\n      (SERVER = DEDICATED)\r\n      (SERVICE_NAME = TESTDB1)\r\n    )\r\n  )\r\n\r\nTest interactive Password:\r\n\r\n[techuser2@oravm1 instantclient_11_2]$ sqlplus ro_user@TESTDB2_ro\r\n\r\nSQL*Plus: Release 11.2.0.3.0 Production on Thu Mar 1 11:28:53 2012\r\n\r\nCopyright (c) 1982, 2011, Oracle.  All rights reserved.\r\n\r\nEnter password:\r\n\r\nConnected to:\r\nOracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production\r\nWith the Partitioning, OLAP, Data Mining and Real Application Testing options\r\n\r\nSQL&gt; quit\r\n\r\nProblem: no mkstore Tool in Instantclient\r\nWorkaround: create wallet with oracle  binaries owner and copy afterwards\r\n\r\n[oracle@oravm1 ~]$ mkdir \/tmp\/wallet\r\n[oracle@oravm1 ~]$  \/u01\/app\/oracle\/product\/11.2.0\/dbhome_1\/bin\/mkstore \\\r\n-wrl \/tmp\/wallet -create\r\nOracle Secret Store Tool : Version 11.2.0.3.0 - Production\r\nCopyright (c) 2004, 2011, Oracle and\/or its affiliates. All rights reserved.\r\n\r\nEnter password:\r\nEnter password again:\r\n[oracle@oravm1 ~]$\r\n[oracle@oravm1 ~]$\r\n[oracle@oravm1 ~]$\r\n[oracle@oravm1 ~]$\r\n[oracle@oravm1 ~]$ \/u01\/app\/oracle\/product\/11.2.0\/dbhome_1\/bin\/mkstore \\\r\n-wrl \/tmp\/wallet -createCredential TESTDB2_ro ro_user ro_password\r\nOracle Secret Store Tool : Version 11.2.0.3.0 - Production\r\nCopyright (c) 2004, 2011, Oracle and\/or its affiliates. All rights reserved.\r\n\r\nEnter wallet password:\r\n\r\nCreate credential oracle.security.client.connect_string1\r\n[oracle@oravm1 ~]$ \/u01\/app\/oracle\/product\/11.2.0\/dbhome_1\/bin\/mkstore \\\r\n-wrl \/tmp\/wallet -createCredential TESTDB1 rw_user rw_password\r\nOracle Secret Store Tool : Version 11.2.0.3.0 - Production\r\nCopyright (c) 2004, 2011, Oracle and\/or its affiliates. All rights reserved.\r\n\r\nEnter wallet password:\r\nCreate credential oracle.security.client.connect_string2\r\n\r\n[techuser2@oravm1 wallet]$ ls -al\r\ntotal 28\r\ndrwxr-xr-x  2 oracle oinstall 4096 Mar  1 11:32 .\r\ndrwxrwxrwt 31 root   root     4096 Mar  1 11:32 ..\r\n-rw-------  1 oracle oinstall 4333 Mar  1 11:33 cwallet.sso\r\n-rw-------  1 oracle oinstall 4256 Mar  1 11:33 ewallet.p12\r\n\r\n[root@oravm1 techuser2]# chown -R techuser2:techuser2 \/tmp\/wallet\r\n\r\n[root@oravm1 techuser2]# ls -la \/tmp\/wallet\/\r\ntotal 28\r\ndrwxr-xr-x  2 techuser2 techuser2 4096 Mar  1 11:32 .\r\ndrwxrwxrwt 31 root      root      4096 Mar  1 11:35 ..\r\n-rw-------  1 techuser2 techuser2 4333 Mar  1 11:33 cwallet.sso\r\n-rw-------  1 techuser2 techuser2 4256 Mar  1 11:33 ewallet.p12\r\n\r\n[techuser2@oravm1 wallet]$ pwd\r\n\/home\/techuser2\/oracle\/network\/wallet\r\n[techuser2@oravm1 wallet]$ mv \/tmp\/wallet\/* .\r\n[techuser2@oravm1 wallet]$ ls -la\r\ntotal 24\r\ndrwxrwxr-x 2 techuser2 techuser2 4096 Mar  1 11:36 .\r\ndrwxrwxr-x 4 techuser2 techuser2 4096 Mar  1 11:25 ..\r\n-rw------- 1 techuser2 techuser2 4333 Mar  1 11:33 cwallet.sso\r\n-rw------- 1 techuser2 techuser2 4256 Mar  1 11:33 ewallet.p12\r\n\r\n[techuser2@oravm1 wallet]$ sqlplus \/@TESTDB2_ro\r\n\r\nSQL*Plus: Release 11.2.0.3.0 Production on Thu Mar 1 11:36:58 2012\r\n\r\nCopyright (c) 1982, 2011, Oracle.  All rights reserved.\r\n\r\nConnected to:\r\nOracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production\r\nWith the Partitioning, OLAP, Data Mining and Real Application Testing options\r\n\r\nSQL&gt; show user\r\nUSER is \"RO_USER\"\r\nSQL&gt; quit\r\n\r\n[techuser2@oravm1 wallet]$ sqlplus \/@TESTDB1\r\n\r\nSQL*Plus: Release 11.2.0.3.0 Production on Thu Mar 1 11:38:06 2012\r\n\r\nCopyright (c) 1982, 2011, Oracle.  All rights reserved.\r\n\r\nConnected to:\r\nOracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production\r\nWith the Partitioning, OLAP, Data Mining and Real Application Testing options\r\n\r\nSQL&gt; show user\r\nUSER is \"RW_USER\"<\/pre>\n<h2><a name=\"135cdd8931946f11_referenz\">Referenz:<\/a><\/h2>\n<div>\n<ul>\n<li>\n<div><a title=\"http:\/\/www.oracle.com\/technetwork\/database\/security\/twp-db-security-secure-ext-pwd-stor-133399.pdf\" rel=\"nofollow\" href=\"http:\/\/www.oracle.com\/technetwork\/database\/security\/twp-db-security-secure-ext-pwd-stor-133399.pdf\" target=\"_blank\">http:\/\/www.oracle.com\/technetwork\/database\/security\/twp-db-security-secure-ext-pwd-stor-133399.pdf<\/a><\/div>\n<\/li>\n<li>\n<div>Using The Secure External Password Store [ID 340559.1]<\/div>\n<\/li>\n<li>\n<div>How To Change The Wallet Password For A Secure External Password Store? [ID 557382.1]<\/div>\n<\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Gone are the day when cleartext passwords had to be stored in scripts for Oracle database access. The solution to this requirement is &#8220;Oracle Secure External Password Store (SEPS)&#8221;. This article will give a short introduction and a practical example of the solution. Key facts: no Advanced Security Option (License) necessary every unix-account, who has [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[13,14,57,5,56],"tags":[],"class_list":["post-1139","post","type-post","status-publish","format-standard","hentry","category-10g","category-11g","category-11gr2","category-oracle-database","category-security"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.ora-solutions.net\/web\/wp-json\/wp\/v2\/posts\/1139","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ora-solutions.net\/web\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ora-solutions.net\/web\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ora-solutions.net\/web\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ora-solutions.net\/web\/wp-json\/wp\/v2\/comments?post=1139"}],"version-history":[{"count":20,"href":"https:\/\/www.ora-solutions.net\/web\/wp-json\/wp\/v2\/posts\/1139\/revisions"}],"predecessor-version":[{"id":1159,"href":"https:\/\/www.ora-solutions.net\/web\/wp-json\/wp\/v2\/posts\/1139\/revisions\/1159"}],"wp:attachment":[{"href":"https:\/\/www.ora-solutions.net\/web\/wp-json\/wp\/v2\/media?parent=1139"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ora-solutions.net\/web\/wp-json\/wp\/v2\/categories?post=1139"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ora-solutions.net\/web\/wp-json\/wp\/v2\/tags?post=1139"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}