{"id":7444,"date":"2020-09-07T20:53:38","date_gmt":"2020-09-07T18:53:38","guid":{"rendered":"http:\/\/www.oradba.ch\/?p=7444"},"modified":"2020-09-07T21:30:15","modified_gmt":"2020-09-07T19:30:15","slug":"oracle-password-filter-for-ad-a-few-exciting-insights","status":"publish","type":"post","link":"https:\/\/www.oradba.ch\/wordpress\/2020\/09\/oracle-password-filter-for-ad-a-few-exciting-insights\/","title":{"rendered":"Oracle Password Filter for AD, a few exciting insights"},"content":{"rendered":"\n<p>When it comes to the conception and implementation of a central user administration of Oracle databases, authentication is one of the central topics. Often there is a need for integration with an existing directory service or IAM solution. Whereby usually MS Active Directory is involved. But Oracle Databases and MS Active Directories are not yet best friends. In this blog post we will explain why this is so, with a focus on authentication.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">A few Basics<\/h2>\n\n\n\n<p>Oracle Databases does provide a couple of authentication methods. This includes among others the following:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Password authentication<\/li><li>OS authentication<\/li><li>Kerberos authentication<\/li><li>SSL authentication<\/li><\/ul>\n\n\n\n<p>All methods have their advantages and disadvantages and thus their justification. But now let&#8217;s speak about password authentication. This works basically always the same way, no matter if database or directory based. The picture below shows the schematic diagram of the password authentication process. <\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"625\" height=\"129\" src=\"https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/DB_logon.png?resize=625%2C129&#038;ssl=1\" alt=\"\" class=\"wp-image-7445\" srcset=\"https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/DB_logon.png?w=783&amp;ssl=1 783w, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/DB_logon.png?resize=300%2C62&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/DB_logon.png?resize=768%2C159&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/DB_logon.png?resize=624%2C129&amp;ssl=1 624w\" sizes=\"auto, (max-width: 625px) 100vw, 625px\" \/><figcaption>Schematic flow of password authentication<\/figcaption><\/figure><\/div>\n\n\n\n<ul class=\"wp-block-list\"><li>The user does send the logon request with its username to the database.<\/li><li>The database generates a session key, to encrypt communication.<\/li><li>The client generates the password hash and sends it encrypted to the DB server.<\/li><li>The database now compares the password hashes.<ul><li> either the hash from USER$<\/li><li>or the hash from the directory server<\/li><\/ul><\/li><\/ul>\n\n\n\n<p>The key aspect is that the database always verifies the password hashes. Either with the hash in the database or, in case of directory-based authentication, with the hash from the directory. The process is used when using Oracle Centrally Managed Users (CMU) but also with Oracle Enterprise User Security in combination with an Oracle Directory e.g. Oracle Unified Directory EUS AD Proxy. In case of a regular LDAP directory, the hash is read from <em>userPassword<\/em> or another attribute. However, this is not possible in MS Active Directory, where passwords are stored internally in the Security Account Manager (SAM) and cannot be read directly. This is one of the reasons why Active Directory is not fully LDAP v3 compliant. But that is an other story \ud83d\ude09 <\/p>\n\n\n\n<p>This is now the moment where the Oracle password filter comes into play. Microsoft does provide a functionality within Windows called <a rel=\"noreferrer noopener\" href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/win32\/secmgmt\/password-filters\" target=\"_blank\">password filter<\/a>. These filters provide a way to implement password policies and change notification. When a password change request is made, the&nbsp;<em>Local Security Authority<\/em>&nbsp;(LSA) calls the password filters registered on the system. Each password filter is called twice: first to validate the new password and then, after all filters have validated the new password, to notify the filters that the change has been made. The following illustration shows this process.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"625\" height=\"202\" src=\"https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/password_filter.png?resize=625%2C202&#038;ssl=1\" alt=\"\" class=\"wp-image-7448\" srcset=\"https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/password_filter.png?w=643&amp;ssl=1 643w, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/password_filter.png?resize=300%2C97&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/password_filter.png?resize=624%2C202&amp;ssl=1 624w\" sizes=\"auto, (max-width: 625px) 100vw, 625px\" \/><figcaption>Password filter and change notification<\/figcaption><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Oracle Password Filter<\/h2>\n\n\n\n<p>The Oracle password filter solves relatively simply the problem that the hash cannot be read. The filter uses the password change notification and stores the password accordingly in an additional LDAP attribute. The database or directory server on the other hand is then able to read the user password hash. Oracle Databases and Active Directory starts to like each other \ud83e\udd13. But usually Windows or Security Admins are not so happy any more. The fact that a foreign DLL has to be installed on the domain controller sometimes causes headaches or just endless discussions&#8230;<\/p>\n\n\n\n<p>The latest version of the password filter is delivered as EXE file <em>opwdintg.exe<\/em>. It is part of any Oracle Database binaries as of release 18c. Older version of Oracle Database, Oracle Internet Directory and Oracle Unified Directory do also include the password filter in an other form e.g. setup.exe or a jar file. Nevertheless it is crucial, that you get the latest version which is right now part of Oracle Database 19.8.0.0. This is also the valid version when you use OUD or OID, see MOS Note <a rel=\"noreferrer noopener\" href=\"https:\/\/support.oracle.com\/epmos\/faces\/DocumentDisplay?id=2640135.1\" target=\"_blank\">2640135.1<\/a> <em>How to Get the Latest oidpwdcn.dll (New Name orapwdfltr.dll)<\/em>. Alternatively you can also download a generic patch <a href=\"https:\/\/updates.oracle.com\/Orion\/Services\/download\/p23191994_111231_Generic.zip?aru=20208836&amp;patch_file=p23191994_111231_Generic.zip\" target=\"_blank\" rel=\"noreferrer noopener\">23191994<\/a> for fusion middleware.<\/p>\n\n\n\n<p>But what exactly happens when you install the Oracle password filter? Oracle performs the following steps during installation:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Add an Active Directory schema extension for an additional user attribute <em><\/em><em>orcleCommonAttribute<\/em>. Once installed a schema extension can not be removed any more.<\/li><li>Create some generic groups to control the password filter plugin. The filter will only update the <em><\/em><em>orcleCommonAttribute<\/em> attribute for users which are part directly or indirectly of one of the group.<ul><li><em>ORA_VFR_MD5<\/em> is required when the Oracle Database WebDAV client is used <\/li><li><em>ORA_VFR_11G<\/em> enables the use of the Oracle Database 11G password verifier<\/li><li><em>ORA_VFR_12C<\/em> enables the use of the Oracle Database 12C password verifier<\/li><\/ul><\/li><li>Install the Oracle password filter DLL <em>orapwdfltr.dll<\/em>. This requires a reboot of the domain controller.<\/li><\/ul>\n\n\n\n<p>The following screenshots show the installation of the Oracle password filer.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"625\" height=\"326\" src=\"https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/install_schema.png?resize=625%2C326&#038;ssl=1\" alt=\"\" class=\"wp-image-7450\" srcset=\"https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/install_schema.png?w=1800&amp;ssl=1 1800w, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/install_schema.png?resize=300%2C157&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/install_schema.png?resize=1024%2C535&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/install_schema.png?resize=768%2C401&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/install_schema.png?resize=1536%2C802&amp;ssl=1 1536w, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/install_schema.png?resize=624%2C326&amp;ssl=1 624w, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/install_schema.png?w=1250&amp;ssl=1 1250w\" sizes=\"auto, (max-width: 625px) 100vw, 625px\" \/><figcaption>Schema Extension done by the Oracle Password Filter<\/figcaption><\/figure><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"625\" height=\"326\" src=\"https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/install_filter.png?resize=625%2C326&#038;ssl=1\" alt=\"\" class=\"wp-image-7451\" srcset=\"https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/install_filter.png?w=1803&amp;ssl=1 1803w, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/install_filter.png?resize=300%2C157&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/install_filter.png?resize=1024%2C534&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/install_filter.png?resize=768%2C401&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/install_filter.png?resize=1536%2C802&amp;ssl=1 1536w, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/install_filter.png?resize=624%2C326&amp;ssl=1 624w, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/install_filter.png?w=1250&amp;ssl=1 1250w\" sizes=\"auto, (max-width: 625px) 100vw, 625px\" \/><figcaption>DLL Installation by the Oracle Password Filter<\/figcaption><\/figure><\/div>\n\n\n\n<p>After a reboot the installation of the Oracle password filter is finished. Now let&#8217;s see what&#8217;s new there. First we review the AD schema change. This can be done by starting the Microsoft Management Console (MMC) and open the Active Directory Schema Snap-In. See the old documentation <a rel=\"noreferrer noopener\" href=\"https:\/\/docs.microsoft.com\/en-us\/previous-versions\/windows\/it-pro\/windows-server-2008-R2-and-2008\/cc794773(v=ws.10)?redirectedfrom=MSDN\" target=\"_blank\">install the Schema Snap-In <\/a>if the snap-in is not available. The following screenshot does show the details about the new attribute.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/schema_extension.png?resize=446%2C502&#038;ssl=1\" alt=\"\" class=\"wp-image-7454\" width=\"446\" height=\"502\" srcset=\"https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/schema_extension.png?w=798&amp;ssl=1 798w, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/schema_extension.png?resize=267%2C300&amp;ssl=1 267w, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/schema_extension.png?resize=768%2C864&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/schema_extension.png?resize=624%2C702&amp;ssl=1 624w\" sizes=\"auto, (max-width: 446px) 100vw, 446px\" \/><figcaption>New orcleCommonAttribute<\/figcaption><\/figure><\/div>\n\n\n\n<p>In the registry we see under LSA an additional entry for the notification packages. <em>orapwdfltr<\/em> the name of the DLL installed on the domain server.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"625\" height=\"388\" src=\"https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/lsa_registry_entries.png?resize=625%2C388&#038;ssl=1\" alt=\"\" class=\"wp-image-7456\" srcset=\"https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/lsa_registry_entries.png?resize=1024%2C636&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/lsa_registry_entries.png?resize=300%2C186&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/lsa_registry_entries.png?resize=768%2C477&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/lsa_registry_entries.png?resize=1536%2C954&amp;ssl=1 1536w, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/lsa_registry_entries.png?resize=624%2C387&amp;ssl=1 624w, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/lsa_registry_entries.png?w=1981&amp;ssl=1 1981w, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/lsa_registry_entries.png?w=1250&amp;ssl=1 1250w, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/lsa_registry_entries.png?w=1875&amp;ssl=1 1875w\" sizes=\"auto, (max-width: 625px) 100vw, 625px\" \/><figcaption>New LSA notification packages<\/figcaption><\/figure><\/div>\n\n\n\n<p>And finally the new groups and the new attribute <em><\/em><em>orcleCommonAttribute<\/em>. <\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"625\" height=\"367\" src=\"https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/ad_groups.png?resize=625%2C367&#038;ssl=1\" alt=\"\" class=\"wp-image-7457\" srcset=\"https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/ad_groups.png?resize=1024%2C602&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/ad_groups.png?resize=300%2C176&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/ad_groups.png?resize=768%2C451&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/ad_groups.png?resize=1536%2C902&amp;ssl=1 1536w, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/ad_groups.png?resize=624%2C367&amp;ssl=1 624w, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/ad_groups.png?w=1799&amp;ssl=1 1799w, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/ad_groups.png?w=1250&amp;ssl=1 1250w\" sizes=\"auto, (max-width: 625px) 100vw, 625px\" \/><figcaption>New generic Oracle groups<\/figcaption><\/figure><\/div>\n\n\n\n<p>Although the attribute <em><\/em><em>orcleCommonAttribute<\/em> in the picture below does only get propagated after a password reset. The user KING is part of the group <em>Trivadis LAB Users<\/em>. This group itself is member of <em>ORA_VFR_11G<\/em>.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/user_preference_king.png?resize=434%2C585&#038;ssl=1\" alt=\"\" class=\"wp-image-7458\" width=\"434\" height=\"585\" srcset=\"https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/user_preference_king.png?resize=758%2C1024&amp;ssl=1 758w, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/user_preference_king.png?resize=222%2C300&amp;ssl=1 222w, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/user_preference_king.png?resize=624%2C843&amp;ssl=1 624w\" sizes=\"auto, (max-width: 434px) 100vw, 434px\" \/><figcaption>Attributes of user KING<\/figcaption><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Yeah, but it&#8217;s an Oracle tool&#8230;<\/h2>\n\n\n\n<p>In one of my many conversations with customers about these password filters I was asked if they could examine the source code. Mmm, no! It is quite common that neither Oracle nor Microsoft publish their source code. In this case Oracle uses an API or functionality defined and documented by Microsoft. But this does not convince everyone. That&#8217;s why I have tried to investigate this in detail. One of my first attempts was a test if I can decompile the DLL. This would be possible if it is written in .net or something similar, but not with C or C++. You can use an online <a rel=\"noreferrer noopener\" href=\"https:\/\/onlinedisassembler.com\/odaweb\/\" target=\"_blank\">disassembler<\/a>, but the result will not help you. <\/p>\n\n\n\n<p>Analysis of the executable installation file <em>opwdintg.exe<\/em> with <a href=\"https:\/\/exiftool.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">exiftool<\/a>, reveal that it is only a self extracting cabinet.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">exiftool opwdintg.exe \nExifTool Version Number         : 12.00\nFile Name                       : opwdintg.exe\nDirectory                       : .\nFile Size                       : 193 kB\nFile Modification Date\/Time     : 2020:09:04 06:17:15+02:00\nFile Access Date\/Time           : 2020:09:04 06:18:43+02:00\nFile Inode Change Date\/Time     : 2020:09:04 06:17:15+02:00\nFile Permissions                : rw-r--r--\nFile Type                       : Win64 EXE\nFile Type Extension             : exe\nMIME Type                       : application\/octet-stream\nMachine Type                    : AMD AMD64\nTime Stamp                      : 2013:10:14 08:48:22+02:00\nImage File Characteristics      : Executable, Large address aware\nPE Type                         : PE32+\nLinker Version                  : 11.0\nCode Size                       : 32768\nInitialized Data Size           : 163840\nUninitialized Data Size         : 0\nEntry Point                     : 0x7f1c\nOS Version                      : 6.3\nImage Version                   : 6.3\nSubsystem Version               : 5.2\nSubsystem                       : Windows GUI\nFile Version Number             : 11.0.9600.16428\nProduct Version Number          : 11.0.9600.16428\nFile Flags Mask                 : 0x003f\nFile Flags                      : (none)\nFile OS                         : Windows NT 32-bit\nObject File Type                : Executable application\nFile Subtype                    : 0\nLanguage Code                   : English (U.S.)\nCharacter Set                   : Unicode\nCompany Name                    : Microsoft Corporation\nFile Description                : Win32 Cabinet Self-Extractor\nFile Version                    : 11.00.9600.16428 (winblue_gdr.131013-1700)\nInternal Name                   : Wextract\nLegal Copyright                 : \u00a9 Microsoft Corporation. All rights reserved.\nOriginal File Name              : WEXTRACT.EXE            .MUI\nProduct Name                    : Internet Explorer\nProduct Version                 : 11.00.9600.16428<\/code><\/pre>\n\n\n\n<p>You can invoke the executable with two additional parameters C and T to extract the content into the directory specified with T.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">c:\\vagrant>opwdintg.exe \/C \/T:c:\\vagrant\\opwdintg<\/code><\/pre>\n\n\n\n<p>In the directory you will find three files:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><em><strong>instpflt.bat<\/strong><\/em> Batch file used to install the password filter.<\/li><li><em><strong>etadschm.bat<\/strong><\/em> Batch file used to do the schema extension for <em><\/em><em>orcleCommonAttribute<\/em> and create the 3 AD groups.<\/li><li><em><strong>orapwdfltr.dll<\/strong><\/em> the Oracle password filter dll itself.<\/li><\/ul>\n\n\n\n<p>Even if you cannot decompile <em>orapwdfltr.dll<\/em>, you can still examine the batch files. As expected, the batch files do exactly what we have already verified graphically above. Schema extension, create groups and register Oracle password filter.<\/p>\n\n\n\n<p>With <a rel=\"noreferrer noopener\" href=\"http:\/\/pev.sourceforge.net\/\" target=\"_blank\">pev<\/a>, a PE file analysis toolkit, we can check other stuff like the functions exported by the DLL. As you can see in the output below, the functions correspond to Microsoft&#8217;s specifications for <a rel=\"noreferrer noopener\" href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/win32\/secmgmt\/management-functions#password-filter-functions\" target=\"_blank\">password filters<\/a>. An indication that the DLL does what it should. However, <em>pev<\/em> provides other tools to analyse the DLL, hashes, import functions etc. But we will skip that at this point.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">readpe --exports orapwdfltr.dll \nExported functions\n    Library\n        Name:                            orapwdfltr.dll\n        Functions\n            Function\n                Ordinal:                         1\n                Address:                         0x1080\n                Name:                            InitializeChangeNotify\n            Function\n                Ordinal:                         2\n                Address:                         0x2ea0\n                Name:                            PasswordChangeNotify\n            Function\n                Ordinal:                         3\n                Address:                         0x1080\n                Name:                            PasswordFilter<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">A few words about Security<\/h2>\n\n\n\n<p>But what about security? There are basically two aspects. First, the fact that the DLL is a rather critical component. There are known malware that exploit exactly this method to get the passwords. It is therefore a best practice to configure LSA security to allow only signed DLLs for LSA. Ok, besides that you should also know which DLL you have installed and why. But here we are at the point where it gets a bit difficult. Oracle has forgotten to sign <em>orapwdfltr.dll<\/em> in the past. Therefore, if LSA security is enabled the password filter will not work. See also MOS note <a rel=\"noreferrer noopener\" href=\"https:\/\/support.oracle.com\/epmos\/faces\/DocumentDisplay?id=2612535.1\" data-type=\"URL\" data-id=\"https:\/\/support.oracle.com\/epmos\/faces\/DocumentDisplay?id=2612535.1\" target=\"_blank\">2612535.1<\/a> or <a rel=\"noreferrer noopener\" href=\"https:\/\/support.oracle.com\/epmos\/faces\/DocumentDisplay?id=2616566.1\" target=\"_blank\">2616566.1<\/a>. Among other things, Oracle has proposed to turn off the LSA security. Certainly not the way to go. But luckily there is already a bug <a rel=\"noreferrer noopener\" href=\"https:\/\/support.oracle.com\/epmos\/faces\/BugDisplay?id=31134430\" target=\"_blank\">31134430<\/a> and patch <a rel=\"noreferrer noopener\" href=\"https:\/\/updates.oracle.com\/Orion\/Services\/download\/p23191994_111231_Generic.zip?aru=20208836&amp;patch_file=p23191994_111231_Generic.zip\" target=\"_blank\">23191994<\/a> available for this issue. The fix does include a signed version of the <em>orapwdfltr.dll<\/em>, as you can see in the following code block. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">signtool.exe verify \/pa \/v orapwdfltr.dll\n\nVerifying: orapwdfltr.dll\n\nSignature Index: 0 (Primary Signature)\nHash of file (sha256): 2A14712107D424FF5577EF5C3D111CF66DB40F6226047ADC4F31389D69F437EB\n\nSigning Certificate Chain:\n Issued to: VeriSign Class 3 Public Primary Certification Authority - G5\n Issued by: VeriSign Class 3 Public Primary Certification Authority - G5\n    Expires:   Wed Jul 16 16:59:59 2036\n    SHA1 hash: 4EB6D578499B1CCF5F581EAD56BE3D9B6744A5E5\n\n Issued to: Symantec Class 3 Extended Validation Code Signing CA - G2\n Issued by: VeriSign Class 3 Public Primary Certification Authority - G5\n        Expires:   Sun Mar 03 16:59:59 2024\n        SHA1 hash: 5B8F88C80A73D35F76CD412A9E74E916594DFA67\n\n    Issued to: Oracle America Inc.\n    Issued by: Symantec Class 3 Extended Validation Code Signing CA - G2\n            Expires:   Wed Jan 27 16:59:59 2021\n            SHA1 hash: 1CB08E9B70B917E64407A4F2665799D58B171F89\n\nThe signature is timestamped: Wed Apr 22 18:33:05 2020\nTimestamp Verified by:\n    Issued to: DigiCert Assured ID Root CA\n    Issued by: DigiCert Assured ID Root CA\n    Expires:   Sun Nov 09 17:00:00 2031\n    SHA1 hash: 0563B8630D62D75ABBC8AB1E4BDFB5A899B24D43\n\n        Issued to: DigiCert SHA2 Assured ID Timestamping CA\n        Issued by: DigiCert Assured ID Root CA\n        Expires:   Tue Jan 07 05:00:00 2031\n        SHA1 hash: 3BA63A6E4841355772DEBEF9CDCF4D5AF353A297\n\n            Issued to: TIMESTAMP-SHA256-2019-10-15\n            Issued by: DigiCert SHA2 Assured ID Timestamping CA\n            Expires:   Wed Oct 16 17:00:00 2030\n            SHA1 hash: 0325BD505EDA96302DC22F4FA01E4C28BE2834C5\n\nSuccessfully verified: orapwdfltr.dll\n\nNumber of files successfully Verified: 1\nNumber of warnings: 0\nNumber of errors: 0<\/code><\/pre>\n\n\n\n<p>Alternatively you can also check the windows property of <em>orapwdfltr.dll<\/em>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/orapwdfltr.dll_.png?resize=303%2C380&#038;ssl=1\" alt=\"\" class=\"wp-image-7462\" width=\"303\" height=\"380\" srcset=\"https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/orapwdfltr.dll_.png?w=810&amp;ssl=1 810w, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/orapwdfltr.dll_.png?resize=239%2C300&amp;ssl=1 239w, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/orapwdfltr.dll_.png?resize=768%2C964&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/orapwdfltr.dll_.png?resize=624%2C783&amp;ssl=1 624w\" sizes=\"auto, (max-width: 303px) 100vw, 303px\" \/><figcaption>Properties of <em>orapwdfltr.dll<\/em><\/figcaption><\/figure>\n\n\n\n<p>The other security challenge is the password hash itself. In a regular LDAP, ACIs are usually defined to restrict access to password attributes. However, no ACIs are defined when installing the Oracle password filter. It is therefore strongly recommended to restrict access to this attribute. Generally only the Oracle service accounts, which are used to setup Oracle AD integration, has to read it. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>When my workmate Martin Berger published his blog post about the issue with <a rel=\"noreferrer noopener\" href=\"https:\/\/berxblog.blogspot.com\/2020\/05\/EUS-authentication-with-LSA.html\" data-type=\"URL\" data-id=\"https:\/\/berxblog.blogspot.com\/2020\/05\/EUS-authentication-with-LSA.html\" target=\"_blank\">LSA and the password filter<\/a>, there was no official solution beside disabling LSA security. Fortunately it is a bit better in the meantime. The bug fix did found its way in the latest release of Oracle Database 19c (19.8.0.0) and in the generic fusion middleware patch <a rel=\"noreferrer noopener\" href=\"https:\/\/updates.oracle.com\/Orion\/Services\/download\/p23191994_111231_Generic.zip?aru=20208836&amp;patch_file=p23191994_111231_Generic.zip\" target=\"_blank\">23191994<\/a>. This official signed version of the password filter can be used for either Oracle Centrally Managed Users (CMU), Oracle Enterprise User Security (EUS) or Oracle Unified Directory DIP. It is a fact that this password filter means a change on the domain server. Every change represents a potential risk. Nevertheless, this change is comprehensible and is, according to Microsoft, a documented procedure. By carefully assigning the Oracle groups (ORA_VFR_11g, ORA_VFR_11C, etc), you can ensure that only those users who need the hash in <em>orcleCommonAttribute<\/em> have set it. It is also recommended to define ACIs to limit access to <em>orcleCommonAttribute<\/em> restrictively.<\/p>\n\n\n\n<p>SSL and Kerberos authentication are basically secure methods. Additionally these authentication methods allow Single Sign On.  Unfortunately, practice shows that many tools cannot handle this. Password authentication on the other hand offers greater flexibility. The Oracle password filter is not bad nor dangerous. In my humble opinion it is worth to consider this solution.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">References<\/h2>\n\n\n\n<p>A few links related to this blog post:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Blog post by my workmate Martin Berger about <a rel=\"noreferrer noopener\" href=\"https:\/\/berxblog.blogspot.com\/2020\/05\/EUS-authentication-with-LSA.html\" target=\"_blank\">Oracle EUS authentication with LSA activated on AD<\/a> Thanks for bringing up this topic at Trivadis as well with Oracle Support<\/li><li>Oracle Enterprise User Security <a rel=\"noreferrer noopener\" href=\"https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-database\/19\/dbseg\/integrating_mads_with_oracle_database.html#GUID-4B702116-EF10-47AC-9267-163553C15FF5\" target=\"_blank\">AD Integration<\/a><\/li><li><strong>Oracle Support Note <a rel=\"noreferrer noopener\" href=\"https:\/\/support.oracle.com\/epmos\/faces\/DocumentDisplay?id=2640135.1\" target=\"_blank\"><strong>2640135.1<\/strong><\/a><\/strong> <em>OUD 12c &#8211; How to Get the Latest oidpwdcn.dll (New Name orapwdfltr.dll)<\/em><\/li><li><strong>Oracle Support Note <a rel=\"noreferrer noopener\" href=\"https:\/\/support.oracle.com\/epmos\/faces\/DocumentDisplay?id=2612535.1\" target=\"_blank\">2612535.1<\/a><\/strong> <em>EUS Login Failure of AD Users Proxied by OUD: LdapErr: DSID-0C090CE0, comment: Error in attribute conversion operation<\/em><\/li><li><strong>Oracle Support Note <a rel=\"noreferrer noopener\" href=\"https:\/\/support.oracle.com\/epmos\/faces\/DocumentDisplay?id=2616566.1\" target=\"_blank\">2616566.1<\/a><\/strong> <em>OUD 11g &#8211; OIDPWDCN.DLL Plug-in Fails On AD 2012 R2 With Error &#8220;The password notification DLL oidpwdcn failed to load with error 577&#8221;<\/em><\/li><li><strong>Oracle Bug <a rel=\"noreferrer noopener\" href=\"https:\/\/support.oracle.com\/epmos\/faces\/BugDisplay?id=31134430\" target=\"_blank\">31134430<\/a><\/strong> need to have <em>orapwdfltr.dll<\/em> signed by Microsoft.<\/li><li><strong>Oracle Patch <a rel=\"noreferrer noopener\" href=\"https:\/\/updates.oracle.com\/Orion\/Services\/download\/p23191994_111231_Generic.zip?aru=20208836&amp;patch_file=p23191994_111231_Generic.zip\" target=\"_blank\">23191994<\/a><\/strong> &#8220;signed&#8221; version of the <em>oidpwdcn.dll<\/em> for Oracle Unified Directory.<\/li><li>Microsoft Windows Dev Center <a rel=\"noreferrer noopener\" href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/win32\/secmgmt\/password-filter-programming-considerations\" target=\"_blank\">Password Filter Programming Considerations<\/a> &nbsp;<\/li><li>Microsoft Windows Dev Center <a rel=\"noreferrer noopener\" href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/win32\/secmgmt\/installing-and-registering-a-password-filter-dll\" target=\"_blank\">Installing and Registering a Password Filter DLL<\/a> &nbsp;<\/li><li>Microsoft Windows Dev Center <a rel=\"noreferrer noopener\" href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/win32\/secmgmt\/password-filters\" target=\"_blank\">Password Filter<\/a>&nbsp;<\/li><li>Microsoft Windows Dev Center <a rel=\"noreferrer noopener\" href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/win32\/secmgmt\/management-functions#password-filter-functions\" target=\"_blank\">Password Filter Functions<\/a>&nbsp;<\/li><li><a rel=\"noreferrer noopener\" href=\"http:\/\/pev.sourceforge.net\/\" target=\"_blank\">pev<\/a> the PE file analysis toolkit<\/li><li><a rel=\"noreferrer noopener\" href=\"https:\/\/exiftool.org\/\" target=\"_blank\">ExifTool<\/a> by Phil Harvey<\/li><li><em>stackoverflow<\/em> discussion about the <a rel=\"noreferrer noopener\" href=\"https:\/\/stackoverflow.com\/questions\/31869552\/how-to-install-signtool-exe-for-windows-10\/52963704#52963704\" target=\"_blank\">signtool<\/a><\/li><\/ul>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>When it comes to the conception and implementation of a central user administration of Oracle databases, authentication is one of the central topics. Often there is a need for integration with an existing directory service or IAM solution. Whereby usually MS Active Directory is involved. But Oracle Databases and MS Active Directories are not yet [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":7486,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[180,181,154,5,142,11,1],"tags":[],"class_list":["post-7444","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-18c","category-19c","category-enterprise-user-security","category-oracle-database","category-oud","category-security","category-uncategorized"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/DB_logon_hash.png?fit=914%2C337&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/p1aErb-1W4","jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":14169,"url":"https:\/\/www.oradba.ch\/wordpress\/2023\/11\/easy-setup-of-kerberos-authentication-for-oracle-databases\/","url_meta":{"origin":7444,"position":0},"title":"Easy setup of Kerberos Authentication for Oracle Databases","author":"Stefan","date":"8. November 2023","format":false,"excerpt":"I have previously published a couple of blog posts related to Kerberos authentication for databases. In this post, I want to provide a simple, step-by-step tutorial for configuring Kerberos authentication. This tutorial is based on my lab setup within Oracle Cloud Infrastructure (OCI). Within this environment, I run both a\u2026","rel":"","context":"In &quot;19c&quot;","block_context":{"text":"19c","link":"https:\/\/www.oradba.ch\/wordpress\/category\/oracle-database\/19c\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/CDBkrb5.png?fit=1010%2C600&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/CDBkrb5.png?fit=1010%2C600&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/CDBkrb5.png?fit=1010%2C600&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/CDBkrb5.png?fit=1010%2C600&ssl=1&resize=700%2C400 2x"},"classes":[]},{"id":2642,"url":"https:\/\/www.oradba.ch\/wordpress\/2018\/06\/oracle-18c-new-security-features\/","url_meta":{"origin":7444,"position":1},"title":"Oracle 18c new Security Features","author":"Stefan","date":"14. June 2018","format":false,"excerpt":"Today I had the opportunity to give a presentation on Oracle 18c new Security Features at the SOUG day in Baden. It was a great opportunity to discuss the security enhancements in the latest Oracle database release. This release introduces some new security features that simplify the secure operation of\u2026","rel":"","context":"In &quot;18c&quot;","block_context":{"text":"18c","link":"https:\/\/www.oradba.ch\/wordpress\/category\/oracle-database\/18c\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/IMG_1555-300x225.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":9608,"url":"https:\/\/www.oradba.ch\/wordpress\/2022\/02\/free-oracle-unified-directory-for-oracle-net-services\/","url_meta":{"origin":7444,"position":2},"title":"Free Oracle Unified Directory for Oracle Net Services","author":"Stefan","date":"14. February 2022","format":false,"excerpt":"The tnsnames.ora is a configuration file for Oracle database name resolution. It contains network service names that are mapped to connection descriptors for the local naming method. With the help of tnsnames.ora Oracle clients respectively the users can easily access Oracle databases. The connection descriptors provides all relevant information like\u2026","rel":"","context":"In &quot;19c&quot;","block_context":{"text":"19c","link":"https:\/\/www.oradba.ch\/wordpress\/category\/oracle-database\/19c\/"},"img":{"alt_text":"Oracle Net Service Names","src":"https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/OracleNamesLDAP_basic.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/OracleNamesLDAP_basic.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/OracleNamesLDAP_basic.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/OracleNamesLDAP_basic.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/OracleNamesLDAP_basic.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/OracleNamesLDAP_basic.png?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":13925,"url":"https:\/\/www.oradba.ch\/wordpress\/2023\/09\/oracle-sqlnet-tls-configuration-simplified\/","url_meta":{"origin":7444,"position":3},"title":"Oracle SQLNet TLS configuration simplified","author":"Stefan","date":"12. September 2023","format":false,"excerpt":"Most security measures for Oracle databases are usually aimed at protecting and hardening the database itself. This includes secure configuration, implementation of the least privilege principle, reduction of the attack surface, encryption at REST, database audit and much more. Sometimes, however, it is forgotten that the database also communicates with\u2026","rel":"","context":"In &quot;Howto&quot;","block_context":{"text":"Howto","link":"https:\/\/www.oradba.ch\/wordpress\/category\/howto\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/ca_list.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":14123,"url":"https:\/\/www.oradba.ch\/wordpress\/2023\/10\/simplified-keytab-creation-using-linux-tools-joelkallmanday\/","url_meta":{"origin":7444,"position":4},"title":"Simplified Keytab creation using Linux Tools #JoelKallmanDay","author":"Stefan","date":"11. October 2023","format":false,"excerpt":"Today's \u00a0#JoelKallmanDay, my topic is about simplifying the configuration of Kerberos authentication of Oracle databases using Linux tools. I have already written a few things about Kerberos in the past. The blog posts on this topic are usually tagged with Kerberos. Today I want to show you an alternative method\u2026","rel":"","context":"In &quot;Howto&quot;","block_context":{"text":"Howto","link":"https:\/\/www.oradba.ch\/wordpress\/category\/howto\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/kerberos_overview.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/kerberos_overview.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/kerberos_overview.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/kerberos_overview.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/kerberos_overview.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/kerberos_overview.png?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":9217,"url":"https:\/\/www.oradba.ch\/wordpress\/2022\/03\/easy-replacement-of-tnsnames-ora-with-ldap-directory-server\/","url_meta":{"origin":7444,"position":5},"title":"Easy replacement of tnsnames.ora with LDAP Directory Server","author":"Stefan","date":"1. March 2022","format":false,"excerpt":"The tnsnames.ora is a configuration file for Oracle database respectively Oracle Net Service Names resolution. It contains network service names that are mapped to connection descriptors for the local naming method. With the help of tnsnames.ora Oracle clients respectively the users can easily access Oracle databases. The connection descriptors provides\u2026","rel":"","context":"In &quot;19c&quot;","block_context":{"text":"19c","link":"https:\/\/www.oradba.ch\/wordpress\/category\/oracle-database\/19c\/"},"img":{"alt_text":"Oracle Net Service Names","src":"https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/OracleNamesLDAP_basic.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/OracleNamesLDAP_basic.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/OracleNamesLDAP_basic.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/OracleNamesLDAP_basic.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/OracleNamesLDAP_basic.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/www.oradba.ch\/wordpress\/wp-content\/uploads\/OracleNamesLDAP_basic.png?resize=1400%2C800&ssl=1 4x"},"classes":[]}],"_links":{"self":[{"href":"https:\/\/www.oradba.ch\/wordpress\/wp-json\/wp\/v2\/posts\/7444","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.oradba.ch\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.oradba.ch\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.oradba.ch\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.oradba.ch\/wordpress\/wp-json\/wp\/v2\/comments?post=7444"}],"version-history":[{"count":25,"href":"https:\/\/www.oradba.ch\/wordpress\/wp-json\/wp\/v2\/posts\/7444\/revisions"}],"predecessor-version":[{"id":7485,"href":"https:\/\/www.oradba.ch\/wordpress\/wp-json\/wp\/v2\/posts\/7444\/revisions\/7485"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.oradba.ch\/wordpress\/wp-json\/wp\/v2\/media\/7486"}],"wp:attachment":[{"href":"https:\/\/www.oradba.ch\/wordpress\/wp-json\/wp\/v2\/media?parent=7444"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.oradba.ch\/wordpress\/wp-json\/wp\/v2\/categories?post=7444"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.oradba.ch\/wordpress\/wp-json\/wp\/v2\/tags?post=7444"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}