{"id":13116,"date":"2015-12-15T17:57:46","date_gmt":"2015-12-16T01:57:46","guid":{"rendered":"http:\/\/clartechsolutions.com\/?p=13116"},"modified":"2023-03-01T01:46:03","modified_gmt":"2023-03-01T01:46:03","slug":"crear-esquema-de-autenticacion-personalizado-en-oracle-apex-5-0","status":"publish","type":"post","link":"https:\/\/kiusi.com\/en\/crear-esquema-de-autenticacion-personalizado-en-oracle-apex-5-0\/","title":{"rendered":"Crear Esquema de Autenticaci\u00f3n Personalizado en Oracle APEX 5.0"},"content":{"rendered":"<p>Uno de los temas que m\u00e1s buscamos los desarrolladores en conocer c\u00f3mo mejorar la seguridad en nuestras aplicaciones desarrolladas en Application Express. As\u00ed como el administrador de la Instancia o el Espacio de Trabajo debe velar por la seguridad de la Base de Datos, el desarrollador debe velar por la seguridad de las aplicaciones que desarrolla.<\/p>\n<p>Cuando creamos nuestras aplicaciones en Oracle Apex todo el proceso de autenticaci\u00f3n lo maneja internamente el motor de Apex permiti\u00e9ndonos ingresar a nuestra aplicaci\u00f3n por el solo hecho de ser un usuario registrado del espacio de trabajo al cual pertenece nuestra aplicaci\u00f3n.<\/p>\n<p>L\u00f3gicamente esto acelera en gran medida el desarrollo de la aplicaci\u00f3n ya que no necesitamos crear y manejar la autenticaci\u00f3n de los usuarios, pero s\u00ed necesitamos almacenar la informaci\u00f3n de los usuarios que acceden a nuestra aplicaci\u00f3n en una tabla en nuestro esquema y controlar que niveles de acceso tienen en la aplicaci\u00f3n, necesitamos aprender a crear una autenticaci\u00f3n personalizada.<\/p>\n<p>\u00bfEn qu\u00e9 casos vamos a utilizar un esquema personalizado de autenticaci\u00f3n?<\/p>\n<ul>\n<li>Cuando la autenticaci\u00f3n de la base de datos o de otros m\u00e9todos no son adecuados.<\/li>\n<li>Cuando queremos desarrollar nuestro propio formulario de acceso y m\u00e9todos asociados.<\/li>\n<li>Cuando deseamos controlar los aspectos de seguridad de la administraci\u00f3n de sesiones.<\/li>\n<li>Cuando queremos auditar las actividades a nivel de usuario o sesi\u00f3n.<\/li>\n<li>Cuando queremos hacer cumplir l\u00edmites de actividad de sesi\u00f3n o de caducidad.<\/li>\n<li>Cuando deseamos programar una redirecci\u00f3n condicional antes del procesamiento de p\u00e1gina.<\/li>\n<li>Cuando queremos integrar nuestra aplicaci\u00f3n con aplicaciones que no son de Oracle Application Express utilizando un framework com\u00fan para la gesti\u00f3n de sesiones.<\/li>\n<li>Cuando nuestra aplicaci\u00f3n consta de varias aplicaciones que funcionan perfectamente integradas (por ejemplo, m\u00e1s de un ID de aplicaci\u00f3n).<\/li>\n<\/ul>\n<p>Para este ejemplo, vamos a crear una aplicaci\u00f3n de tipo Escritorio dentro de nuestro espacio de trabajo.<\/p>\n<h3><strong>Crear Aplicaci\u00f3n Demo<\/strong><\/h3>\n<p><img data-recalc-dims=\"1\" fetchpriority=\"high\" decoding=\"async\" data-attachment-id=\"16036\" data-permalink=\"https:\/\/kiusi.com\/en\/crear-esquema-de-autenticacion-personalizado-en-oracle-apex-5-0\/au-img1\/\" data-orig-file=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img1.jpg?fit=1914%2C755&amp;ssl=1\" data-orig-size=\"1914,755\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;Clarisa Maman Orfali&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1450185465&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"au-img1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img1.jpg?fit=750%2C296&amp;ssl=1\" class=\"alignnone wp-image-16036 size-full\" src=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img1.jpg?resize=750%2C296&#038;ssl=1\" alt=\"\" width=\"750\" height=\"296\" srcset=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img1.jpg?w=1914&amp;ssl=1 1914w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img1.jpg?resize=300%2C118&amp;ssl=1 300w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img1.jpg?resize=1024%2C404&amp;ssl=1 1024w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img1.jpg?resize=768%2C303&amp;ssl=1 768w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img1.jpg?resize=1536%2C606&amp;ssl=1 1536w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img1.jpg?resize=18%2C7&amp;ssl=1 18w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img1.jpg?resize=1200%2C473&amp;ssl=1 1200w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img1.jpg?resize=1568%2C619&amp;ssl=1 1568w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/p>\n<p>Posteriormente vamos a crear una tabla que contendr\u00e1 los datos de los usuarios.<\/p>\n<h3><strong>Crear Tabla de Usuarios<\/strong><\/h3>\n<p>Para ello ingresamos al Taller SQL y ejecutamos las siguientes sentencias una a una:<\/p>\n<pre>CREATE table \"MY_USERS\" (\n &nbsp;&nbsp; \"USER_ID\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NUMBER(8,0) NOT NULL,\n &nbsp;&nbsp; \"USER_NAME\"&nbsp;&nbsp;&nbsp;&nbsp; VARCHAR2(100) NOT NULL,\n &nbsp;&nbsp; \"USER_PASSWORD\" VARCHAR2(4000) NOT NULL,\n &nbsp;&nbsp; constraint&nbsp; \"MY_USERS_PK\" primary key (\"USER_ID\")\n)\n\/\n\nCREATE sequence \"MY_USERS_SEQ\"\n\/\n\nCREATE trigger \"BI_MY_USERS\" \n  before insert on \"MY_USERS\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \n  for each row\nbegin \n  if :NEW.\"USER_ID\" is null then\n &nbsp;&nbsp; select \"MY_USERS_SEQ\".nextval into :NEW.\"USER_ID\" from sys.dual;\n  end if;\nend;\n\/<\/pre>\n<h3><strong>Crear Funciones en la Base de Datos<\/strong><\/h3>\n<p>Para poder disponer de nuestro esquema de autenticaci\u00f3n personalizado necesitamos para este ejemplo tener dos funciones en la base de datos, una de las funciones MY_AUTH se encargar\u00e1 de verificar que el usuario est\u00e1 en la base de datos seg\u00fan las credenciales almacenadas en la tabla MY_USERS y la otra funci\u00f3n MY_HASH se encargar\u00e1 de encriptar la contrase\u00f1a utilizando el algoritmo hash.<\/p>\n<p>La funci\u00f3n MY_AUTH recibe el nombre de usuario y contrase\u00f1a como par\u00e1metros desde el formulario de inicio de sesi\u00f3n y compara esta informaci\u00f3n con los valores almacenados en la tabla MY_USERS despu\u00e9s de aplicar la funci\u00f3n MY_HASH. Si la informaci\u00f3n proporcionada coincide con los valores de la tabla, el usuario es autenticado y se le permite acceder a la aplicaci\u00f3n.<\/p>\n<p><strong>MY_AUTH FUNCTION<\/strong><\/p>\n<pre>create or replace function my_auth (p_username in VARCHAR2, p_password in VARCHAR2) return BOOLEAN is\n  l_password varchar2(4000);\n  l_stored_password varchar2(4000);\n  l_count number;\nbegin\n-- Primero, verificar que el usuario existe en la tabla\nselect count(*) into l_count from my_users where user_name = p_username;\nif l_count &gt; 0 then\n  -- Recuperar la contrase\u00f1a hash almacenada\n  select user_password into l_stored_password\n &nbsp; from my_users where user_name = p_username;\n &nbsp; -- Aplicar la funci\u00f3n hash al password\n &nbsp;&nbsp; l_password := my_hash(p_username, p_password);\n  -- Comparar y ver si son los mismos y retornar VERDADERO o FALSO\n &nbsp;&nbsp; if l_password = l_stored_password then\n &nbsp;&nbsp;&nbsp;&nbsp; return true;\n &nbsp;&nbsp; else\n &nbsp;&nbsp;&nbsp;&nbsp; return false;\n &nbsp;&nbsp; end if;\nelse\n  -- El nombre de usuario provisto no se encuentra en la tabla MY_USERS\n  return false;\nend if;\nend;<\/pre>\n<p><strong>MY_HASH FUNCTION<\/strong><\/p>\n<pre>create or replace function my_hash (p_username in varchar2, p_password in varchar2) return varchar2 is\n &nbsp; l_password varchar2(4000);\n &nbsp; l_salt varchar2(4000) := '<strong>ISYmHMtSrjFmT2nEZUvEU5LA3jrV3i<\/strong>';\nbegin\n &nbsp; l_password := utl_raw.cast_to_raw(dbms_obfuscation_toolkit.md5(input_string =&gt; p_password || substr(l_salt,10,13) || p_username || substr(l_salt, 4,10)));\n &nbsp; return l_password;\nend;<\/pre>\n<p>Creamos los archivos <strong>my_hash.sql<\/strong> and <strong>my_auth.sql<\/strong> y lo guardamos en nuestro Escritorio.<\/p>\n<h3><strong>Encriptar la funci\u00f3n MY_HASH<\/strong><\/h3>\n<p>Si nosotros subimos este script a nuestra base de datos, cualquiera que tenga acceso a los objetos de la base de datos podr\u00e1 ver de qu\u00e9 forma estamos realizando la encriptaci\u00f3n de las contrase\u00f1as, por ello es muy importante antes de subir el script poder encriptarlo.<\/p>\n<p>Para encriptar nuestra funci\u00f3n haremos uso de la la utilidad <strong>Wrapper<\/strong> &nbsp;que es un ejecutable que se encuentra en la ruta $ORACLE_HOME\/bin y que permite ofuscar un archivo sql haciendo uso de su par\u00e1metro iname.<\/p>\n<p>Hacemos una copia del script my_hash.sql dentro de la carpeta $ORACLE_HOME\/bin que en mi caso es:<\/p>\n<pre><em>C:\\oraclexe\\app\\oracle\\product\\11.2.0\\server\\bin<\/em><\/pre>\n<p>Luego abrimos una ventana de comandos CMD en Windows, nos dirigimos a la ruta donde se encuentra el archivo sql y luego ejecutamos el comando <strong>wrap iname= my_hash.sql<\/strong> &nbsp;y esperamos a que la ejecuci\u00f3n del comando finalice.<\/p>\n<p><img data-recalc-dims=\"1\" decoding=\"async\" data-attachment-id=\"16037\" data-permalink=\"https:\/\/kiusi.com\/en\/crear-esquema-de-autenticacion-personalizado-en-oracle-apex-5-0\/au-img2\/\" data-orig-file=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img2.jpg?fit=1001%2C434&amp;ssl=1\" data-orig-size=\"1001,434\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;Clarisa Maman Orfali&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1450198595&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"au-img2\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img2.jpg?fit=750%2C325&amp;ssl=1\" class=\"alignnone wp-image-16037 size-full\" src=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img2.jpg?resize=750%2C325&#038;ssl=1\" alt=\"\" width=\"750\" height=\"325\" srcset=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img2.jpg?w=1001&amp;ssl=1 1001w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img2.jpg?resize=300%2C130&amp;ssl=1 300w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img2.jpg?resize=768%2C333&amp;ssl=1 768w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img2.jpg?resize=18%2C8&amp;ssl=1 18w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/p>\n<p>Si abrimos el archivo <strong>my_hash.plb<\/strong> en un Notepad++ o cualquier editor de c\u00f3digo, podremos ver la primer l\u00ednea como <em>create or replace function my_hash wrapped<\/em> y luego el resto del archivo estar\u00e1 oculto.<\/p>\n<p><img data-recalc-dims=\"1\" decoding=\"async\" data-attachment-id=\"16038\" data-permalink=\"https:\/\/kiusi.com\/en\/crear-esquema-de-autenticacion-personalizado-en-oracle-apex-5-0\/au-img3\/\" data-orig-file=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img3.jpg?fit=845%2C684&amp;ssl=1\" data-orig-size=\"845,684\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;Clarisa Maman Orfali&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1450198786&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"au-img3\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img3.jpg?fit=750%2C607&amp;ssl=1\" class=\"alignnone wp-image-16038 size-full\" src=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img3.jpg?resize=750%2C607&#038;ssl=1\" alt=\"\" width=\"750\" height=\"607\" srcset=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img3.jpg?w=845&amp;ssl=1 845w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img3.jpg?resize=300%2C243&amp;ssl=1 300w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img3.jpg?resize=768%2C622&amp;ssl=1 768w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img3.jpg?resize=15%2C12&amp;ssl=1 15w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/p>\n<p>Ahora que tenemos encriptada la funci\u00f3n my_hash podemos subirla a nuestro esquema.<\/p>\n<p>Lo podemos hacer desde el Taller de SQL o abrimos una ventana de comandos CMD y nos conectamos al SQLPlus y luego nos conectamos al usuario de nuestro esquema:<\/p>\n<pre>SQL&gt; conn clartech\/************\n\nSQL&gt; @c:\\oraclexe\\app\\oracle\\product\\11.2.0\\server\\bin\\my_hash.plb<\/pre>\n<p>El mensaje que aparecer\u00e1 es que la funcion ha sido creada.<\/p>\n<p>Si ingresamos al Explorador de Objetos y visualizamos la funci\u00f3n podremos ver que est\u00e1 encriptada, de igual forma como lo vimos cuando la abrimos en el Notepad++.<\/p>\n<h3><strong>Crear la funci\u00f3n my_auth.sql<\/strong>.<\/h3>\n<p>Ingresamos al Taller de SQL:<\/p>\n<ol>\n<li>Seleccionamos Archivos de Comandos SQL<\/li>\n<li>Hacemos clic en el bot\u00f3n Cargar<\/li>\n<li>Hacemos clic en el bot\u00f3n Browse y seleccionamos el archivo <strong>my_auth.sql <\/strong>y hacemos clic en el bot\u00f3n cargar<\/li>\n<li>Ejecutamos el script <strong>my_auth.sql<\/strong> y esto crear\u00e1 la funci\u00f3n dentro de la base de datos<\/li>\n<\/ol>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"16039\" data-permalink=\"https:\/\/kiusi.com\/en\/crear-esquema-de-autenticacion-personalizado-en-oracle-apex-5-0\/au-img4\/\" data-orig-file=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img4.jpg?fit=1398%2C716&amp;ssl=1\" data-orig-size=\"1398,716\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;Clarisa Maman Orfali&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1450206034&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"au-img4\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img4.jpg?fit=750%2C384&amp;ssl=1\" class=\"alignnone wp-image-16039 size-full\" src=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img4.jpg?resize=750%2C384&#038;ssl=1\" alt=\"\" width=\"750\" height=\"384\" srcset=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img4.jpg?w=1398&amp;ssl=1 1398w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img4.jpg?resize=300%2C154&amp;ssl=1 300w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img4.jpg?resize=1024%2C524&amp;ssl=1 1024w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img4.jpg?resize=768%2C393&amp;ssl=1 768w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img4.jpg?resize=18%2C9&amp;ssl=1 18w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img4.jpg?resize=1200%2C615&amp;ssl=1 1200w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/p>\n<h3><strong>Registrar Usuarios en la base de datos<\/strong><\/h3>\n<p>Ejecutamos las siguientes sentencias en el Taller de SQL<\/p>\n<pre>Insert into MY_USERS (user_id, user_name, user_password) values (1, upper('Fernando'), my_hash(upper('Fernando'),'Secret1'));\n\nInsert into MY_USERS (user_id, user_name, user_password) values (2, upper('Marcelo'), my_hash(upper('Marcelo'),'Secret2'));<\/pre>\n<p>Si abrimos la tabla MY_USERS podemos ver que las claves est\u00e1n encriptadas.<\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"16040\" data-permalink=\"https:\/\/kiusi.com\/en\/crear-esquema-de-autenticacion-personalizado-en-oracle-apex-5-0\/au-img5\/\" data-orig-file=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img5.jpg?fit=1559%2C526&amp;ssl=1\" data-orig-size=\"1559,526\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;Clarisa Maman Orfali&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1450214896&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"au-img5\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img5.jpg?fit=750%2C253&amp;ssl=1\" class=\"alignnone wp-image-16040 size-full\" src=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img5.jpg?resize=750%2C253&#038;ssl=1\" alt=\"\" width=\"750\" height=\"253\" srcset=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img5.jpg?w=1559&amp;ssl=1 1559w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img5.jpg?resize=300%2C101&amp;ssl=1 300w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img5.jpg?resize=1024%2C345&amp;ssl=1 1024w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img5.jpg?resize=768%2C259&amp;ssl=1 768w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img5.jpg?resize=1536%2C518&amp;ssl=1 1536w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img5.jpg?resize=18%2C6&amp;ssl=1 18w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img5.jpg?resize=1200%2C405&amp;ssl=1 1200w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/p>\n<p>Ya tenemos las funciones y la tabla usuarios para especificar nuestro propio esquema de autenticaci\u00f3n.<\/p>\n<p><strong>Asignar nuestro propio esquema personalizado de autenticaci\u00f3n<\/strong><\/p>\n<ol>\n<li>Nos dirigimos a la p\u00e1gina de Inicio de la Aplicaci\u00f3n<\/li>\n<li>Hacemos clic en Componentes Compartidos<\/li>\n<li>En la secci\u00f3n Seguridad hacemos clic en el enlace Esquemas de Autenticaci\u00f3n<\/li>\n<li>En este momento tenemos el esquema <strong>APEX &#8211; Actual<\/strong> en uso, vamos a cambiarle el nombre a <strong>Esquema Personalizado <\/strong><\/li>\n<li>En tipo de Esquema seleccionamos <strong>Personalizado<\/strong> de la Lista de Selecci\u00f3n<\/li>\n<li>En Nombre de la Funci\u00f3n de Autenticaci\u00f3n ingresamos: <strong>my_auth<\/strong><\/li>\n<li>Hacemos clic en el bot\u00f3n Aplicar Cambios<\/li>\n<\/ol>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"16041\" data-permalink=\"https:\/\/kiusi.com\/en\/crear-esquema-de-autenticacion-personalizado-en-oracle-apex-5-0\/au-img6\/\" data-orig-file=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img6.jpg?fit=1028%2C377&amp;ssl=1\" data-orig-size=\"1028,377\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;Clarisa Maman Orfali&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1450204714&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"au-img6\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img6.jpg?fit=750%2C275&amp;ssl=1\" class=\"alignnone wp-image-16041 size-full\" src=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img6.jpg?resize=750%2C275&#038;ssl=1\" alt=\"\" width=\"750\" height=\"275\" srcset=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img6.jpg?w=1028&amp;ssl=1 1028w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img6.jpg?resize=300%2C110&amp;ssl=1 300w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img6.jpg?resize=1024%2C376&amp;ssl=1 1024w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img6.jpg?resize=768%2C282&amp;ssl=1 768w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img6.jpg?resize=18%2C7&amp;ssl=1 18w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/p>\n<p>Ejecutamos la aplicaci\u00f3n e ingresamos las credenciales de nuestro usuario dentro del Espacio de Trabajo, al no estar en la tabla MY_USERS, se deniega el acceso a la aplicaci\u00f3n.<\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"16042\" data-permalink=\"https:\/\/kiusi.com\/en\/crear-esquema-de-autenticacion-personalizado-en-oracle-apex-5-0\/au-img7\/\" data-orig-file=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img7.jpg?fit=727%2C468&amp;ssl=1\" data-orig-size=\"727,468\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;Clarisa Maman Orfali&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1450204812&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"au-img7\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img7.jpg?fit=727%2C468&amp;ssl=1\" class=\"alignnone wp-image-16042 size-full\" src=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img7.jpg?resize=727%2C468&#038;ssl=1\" alt=\"\" width=\"727\" height=\"468\" srcset=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img7.jpg?w=727&amp;ssl=1 727w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img7.jpg?resize=300%2C193&amp;ssl=1 300w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img7.jpg?resize=18%2C12&amp;ssl=1 18w\" sizes=\"(max-width: 727px) 100vw, 727px\" \/><\/p>\n<p>Ahora ingresamos las credenciales del usuario que hemos creado en la tabla MY_USER, por ejemplo Fernando:<\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"16043\" data-permalink=\"https:\/\/kiusi.com\/en\/crear-esquema-de-autenticacion-personalizado-en-oracle-apex-5-0\/au-img8\/\" data-orig-file=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img8.jpg?fit=660%2C377&amp;ssl=1\" data-orig-size=\"660,377\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;Clarisa Maman Orfali&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1450215989&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"au-img8\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img8.jpg?fit=660%2C377&amp;ssl=1\" class=\"alignnone wp-image-16043 size-full\" src=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img8.jpg?resize=660%2C377&#038;ssl=1\" alt=\"\" width=\"660\" height=\"377\" srcset=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img8.jpg?w=660&amp;ssl=1 660w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img8.jpg?resize=300%2C171&amp;ssl=1 300w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/au-img8.jpg?resize=18%2C10&amp;ssl=1 18w\" sizes=\"(max-width: 660px) 100vw, 660px\" \/><\/p>\n<h3><strong>Conclusion<\/strong><\/h3>\n<p>Como podemos ver, crear un esquema propio de autenticaci\u00f3n es bastante sencillo en Application Express, lo importante es gestionar la seguridad de nuestras aplicaciones responsablemente.<\/p>\n<p>Hasta pronto!<\/p>","protected":false},"excerpt":{"rendered":"<p>Uno de los temas que m\u00e1s buscamos los desarrolladores en conocer c\u00f3mo mejorar la seguridad en nuestras aplicaciones desarrolladas en Application Express. As\u00ed como el administrador de la Instancia o el Espacio de Trabajo debe velar por la seguridad de la Base de Datos, el desarrollador debe velar por la seguridad de las aplicaciones que<a class=\"more-link\" href=\"https:\/\/kiusi.com\/en\/crear-esquema-de-autenticacion-personalizado-en-oracle-apex-5-0\/\">Continue reading <span class=\"screen-reader-text\">&#8220;Crear Esquema de Autenticaci\u00f3n Personalizado en Oracle APEX 5.0&#8221;<\/span><\/a><\/p>","protected":false},"author":132749711,"featured_media":16462,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","_crdt_document":"","advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_post_was_ever_published":true,"_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":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_wpas_customize_per_network":false},"categories":[121913,121930],"tags":[121903,121929,121956,121886,121957],"class_list":["post-13116","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","category-oracle-apex-5-0","tag-apex","tag-apex-5-0","tag-autenticacion","tag-oracle","tag-seguridad","entry"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/12\/Destacada-Crear-Esquema-de-Autenticacion-Personalizado-en-Oracle-APEX-5.0.jpg?fit=2949%2C1735&ssl=1","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/paMvMS-3py","amp_enabled":true,"_links":{"self":[{"href":"https:\/\/kiusi.com\/en\/wp-json\/wp\/v2\/posts\/13116","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kiusi.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kiusi.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kiusi.com\/en\/wp-json\/wp\/v2\/users\/132749711"}],"replies":[{"embeddable":true,"href":"https:\/\/kiusi.com\/en\/wp-json\/wp\/v2\/comments?post=13116"}],"version-history":[{"count":3,"href":"https:\/\/kiusi.com\/en\/wp-json\/wp\/v2\/posts\/13116\/revisions"}],"predecessor-version":[{"id":16463,"href":"https:\/\/kiusi.com\/en\/wp-json\/wp\/v2\/posts\/13116\/revisions\/16463"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kiusi.com\/en\/wp-json\/wp\/v2\/media\/16462"}],"wp:attachment":[{"href":"https:\/\/kiusi.com\/en\/wp-json\/wp\/v2\/media?parent=13116"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kiusi.com\/en\/wp-json\/wp\/v2\/categories?post=13116"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kiusi.com\/en\/wp-json\/wp\/v2\/tags?post=13116"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}