{"id":1018,"date":"2023-12-07T18:21:56","date_gmt":"2023-12-07T10:21:56","guid":{"rendered":"https:\/\/www.linyinghao.cn\/wordpress\/?p=1018"},"modified":"2023-12-07T18:21:58","modified_gmt":"2023-12-07T10:21:58","slug":"login-oracle-apex-via-authing","status":"publish","type":"post","link":"https:\/\/www.linyinghao.cn\/wordpress\/?p=1018","title":{"rendered":"Login Oracle APEX via Authing"},"content":{"rendered":"\n<p>The original idea is to login to Oracle APEX using WeChat SSO, because WeChat is the most popular social app in China and login with WeChat is a must-have feature for most apps. However, registration of web application in WeChat open platform seems to be available only for company, so we are looking for some workaround.<\/p>\n\n\n\n<p>This article is used to introduce how to integrate Oracle APEX and Authing, which is an identification cloud (also known as IDaaS) product. It is very similar to Oracle&#8217;s IDCS, while in China IDCS is not that popular and Authing is an alternative solution. Most importantly, Authing natively supports WeChat scanning login (free of charge) and SSO (chargeable), as of now.<\/p>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_74 ez-toc-wrap-left counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.linyinghao.cn\/wordpress\/?p=1018\/#Overall_Solution\" >Overall Solution<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.linyinghao.cn\/wordpress\/?p=1018\/#Integrate_APEX_and_Authing_through_OIDC\" >Integrate APEX and Authing through OIDC<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.linyinghao.cn\/wordpress\/?p=1018\/#Enable_access_of_Oracle_APEX_to_Authing_website\" >Enable access of Oracle APEX to Authing website<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.linyinghao.cn\/wordpress\/?p=1018\/#Create_web_credential_in_APEX\" >Create web credential in APEX<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.linyinghao.cn\/wordpress\/?p=1018\/#Create_authentication_schema_in_APEX_application\" >Create authentication schema in APEX application<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.linyinghao.cn\/wordpress\/?p=1018\/#Configure_Authing_to_support_WeChat_scanning_login\" >Configure Authing to support WeChat scanning login<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.linyinghao.cn\/wordpress\/?p=1018\/#Create_Authing_Self-built_App\" >Create Authing Self-built App<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.linyinghao.cn\/wordpress\/?p=1018\/#Create_Social_IDP\" >Create Social IDP<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.linyinghao.cn\/wordpress\/?p=1018\/#Test_The_Social_Sign_On_Process\" >Test The Social Sign On Process<\/a><\/li><\/ul><\/nav><\/div>\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Overall_Solution\"><\/span>Overall Solution<span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<p>Both Oracle APEX and Authing supports OIDC (OpenID Connect), which makes it easy to integrate them by configuration rather than programming. This solution consists of two sections:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Integrate APEX and Authing through OIDC<\/li>\n\n\n\n<li>Configure Authing to support WeChat scanning login<\/li>\n<\/ol>\n\n\n\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Integrate_APEX_and_Authing_through_OIDC\"><\/span>Integrate APEX and Authing through OIDC<span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<p>By definition of OIDC, there are some key roles. They are listed in following<\/p>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<figure class=\"wp-block-table\"><table><tbody><tr><td>Party<\/td><td>Role in OIDC<\/td><\/tr><tr><td>End User (WeChat App)<\/td><td>Resource Owner (\u8d44\u6e90\u6301\u6709\u8005)<\/td><\/tr><tr><td>Web Browser<\/td><td>Application (\u5e94\u7528)<\/td><\/tr><tr><td>Authing<\/td><td>Authentication Server (\u8ba4\u8bc1\u670d\u52a1\u5668)<\/td><\/tr><tr><td>Oracle APEX Website<\/td><td>Resource Owner (\u8d44\u6e90\u670d\u52a1\u5668)<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">Roles in OIDC<\/figcaption><\/figure>\n<\/div><\/div>\n<\/div><\/div>\n\n\n\n<p>As per document of Authing, the Authorization Code login sequence are described as following<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207064237357.png\"><img loading=\"lazy\" decoding=\"async\" width=\"2174\" height=\"1498\" src=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207064237357.png\" alt=\"\" class=\"wp-image-1024\" style=\"aspect-ratio:1.451268357810414;width:840px;height:auto\" srcset=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207064237357.png 2174w, https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207064237357-1536x1058.png 1536w, https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207064237357-2048x1411.png 2048w\" sizes=\"auto, (max-width: 2174px) 100vw, 2174px\" \/><\/a><\/figure>\n\n\n\n<p>By configuring the integration, all activities in the diagram above can be auto executed during user login.<\/p>\n\n\n\n<p>The configuration includes following steps:<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Enable_access_of_Oracle_APEX_to_Authing_website\"><\/span>Enable access of Oracle APEX to Authing website<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Although not being mentioned explicitly in the diagram, Oracle APEX as resource server (\u8d44\u6e90\u670d\u52a1\u5668) has implicit interaction with authentication server (Authing), through web services. For example, during first time login, Oracle APEX redirects browser to \/auth endpoint of Authing. In above step 1, a more typical scenario is, user inputs URL of Oracle APEX in browser, then it returns a 301 status to browser so that the browser auto redirects to Authing&#8217;s login page.<\/p>\n\n\n\n<p>Oracle APEX is relying on its database utility UTL_HTTP for web service invocation. To facilitate the interaction, Oracle APEX have to accept SSL\/TLS certificate of Authing. By default UTL_HTTP doesn&#8217;t recognize certificate of any website. In order to make Authing&#8217;s certificate acceptable by Oracle APEX, we are adding the certificate into Oracle&#8217;s wallet.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Download certificate of Authing<\/h3>\n\n\n\n<p>Open &#8220;authing.cn&#8221; in browser like Firefox, view its certification<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207072538641.png\"><img loading=\"lazy\" decoding=\"async\" width=\"402\" height=\"164\" src=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207072538641.png\" alt=\"\" class=\"wp-image-1034\" style=\"aspect-ratio:2.451219512195122;width:440px;height:auto\"\/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207072619244.png\"><img loading=\"lazy\" decoding=\"async\" width=\"402\" height=\"196\" src=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207072619244.png\" alt=\"\" class=\"wp-image-1035\" style=\"aspect-ratio:2.0510204081632653;width:438px;height:auto\"\/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207072718118.png\"><img loading=\"lazy\" decoding=\"async\" width=\"593\" height=\"486\" src=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207072718118.png\" alt=\"\" class=\"wp-image-1036\" style=\"aspect-ratio:1.2201646090534979;width:494px;height:auto\"\/><\/a><\/figure>\n\n\n\n<p>Download certificate of root CA<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207072927204.png\"><img loading=\"lazy\" decoding=\"async\" width=\"803\" height=\"922\" src=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207072927204.png\" alt=\"\" class=\"wp-image-1037\" style=\"aspect-ratio:0.8709327548806941;width:503px;height:auto\"\/><\/a><\/figure>\n\n\n\n<p>Create an Oracle wallet directory. This directory is used to keep wallet files. Then import the certificate downloaded in above steps. Follow similar steps in this <a href=\"https:\/\/www.linyinghao.cn\/wordpress\/?p=731#Create_DB_Wallet_and_Import_Certificates\" data-type=\"link\" data-id=\"https:\/\/www.linyinghao.cn\/wordpress\/?p=731#Create_DB_Wallet_and_Import_Certificates\">post<\/a>.<\/p>\n\n\n\n<p>Assign ACL to permit access to Authing&#8217;s domain<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>declare\r\n  l_username varchar2(30) := 'APEX_230200';\r\nbegin\r\n  dbms_network_acl_admin.append_host_ace(\r\n    host => 'clark-apex.authing.cn',\r\n    lower_port => 443,\r\n    upper_port => 443,\r\n    ace  =>  xs$ace_type(privilege_list => xs$name_list('connect'),\r\n                        principal_name => l_username,\r\n                        principal_type => xs_acl.ptype_db));\r\n\r\n  commit;\r\nend;<\/code><\/pre>\n\n\n\n<p>Here &#8220;clark-apex&#8221; is the sub domain configured in <a href=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207080904657.png\">Authing&#8217;s app<\/a>. This step is described later in this article.<\/p>\n\n\n\n<p>Verify if the OpenID discovery URL is accessible by Oracle database. Make sure it can get HTTP response without error. OpenID discovery URL can be found in <strong>Service Discovery Address<\/strong> in <a href=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207081345196.png\">Authing&#8217;s app<\/a> after creation.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>select apex_web_service.make_rest_request(\r\n    p_url         => 'https:\/\/clark-apex.authing.cn\/oidc\/.well-known\/openid-configuration',\r\n    p_http_method => 'GET' ) as response from dual;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Create_web_credential_in_APEX\"><\/span>Create web credential in APEX<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Follow <a href=\"https:\/\/www.linyinghao.cn\/wordpress\/?p=731#Configure_APEX_to_Use_Wallet_as_Web_Credential\">this step<\/a> to specify wallet which has contains web credential.<\/p>\n\n\n\n<p>Create web credential in APEX<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207080204260.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1336\" height=\"290\" src=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207080204260.png\" alt=\"\" class=\"wp-image-1047\"\/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207081935646.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1323\" height=\"688\" src=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207081935646.png\" alt=\"\" class=\"wp-image-1058\"\/><\/a><\/figure>\n\n\n\n<p>For <strong>Client ID<\/strong> and <strong>Client Secret<\/strong>, get them from <strong>App ID<\/strong> and <strong>App Secret<\/strong> in <a href=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207081345196.png\">Authing Self-built App<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Create_authentication_schema_in_APEX_application\"><\/span>Create authentication schema in APEX application<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207082112609.png\"><img loading=\"lazy\" decoding=\"async\" width=\"871\" height=\"319\" src=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207082112609.png\" alt=\"\" class=\"wp-image-1059\"\/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207082245945.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1331\" height=\"306\" src=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207082245945.png\" alt=\"\" class=\"wp-image-1060\"\/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207084635795.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1314\" height=\"826\" src=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207084635795.png\" alt=\"\" class=\"wp-image-1076\"\/><\/a><\/figure>\n\n\n\n<p>For <strong>Discovery URL<\/strong>, get it from <strong>Service Discovery Address<\/strong> in <a href=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207081345196.png\">Authing Self-built App<\/a>.<\/p>\n\n\n\n<p>Set the newly created authentication schema as current<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207082902807.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1315\" height=\"823\" src=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207082902807.png\" alt=\"\" class=\"wp-image-1064\"\/><\/a><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Configure_Authing_to_support_WeChat_scanning_login\"><\/span>Configure Authing to support WeChat scanning login<span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<p>Configure several components in Authing, including Self-built App, Social IDP, etc.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Create_Authing_Self-built_App\"><\/span>Create Authing Self-built App<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207080651153.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1077\" height=\"651\" src=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207080651153.png\" alt=\"\" class=\"wp-image-1048\" style=\"aspect-ratio:1.6543778801843319;width:553px;height:auto\"\/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207080904657.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1006\" height=\"706\" src=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207080904657.png\" alt=\"\" class=\"wp-image-1049\" style=\"aspect-ratio:1.424929178470255;width:565px;height:auto\"\/><\/a><\/figure>\n\n\n\n<p>Some key fields, including <strong>App ID<\/strong>, <strong>App Secret<\/strong> and <strong>Service Discovery Address<\/strong>, are auto generated after creation.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207101902927.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1465\" height=\"826\" src=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207101902927.png\" alt=\"\" class=\"wp-image-1103\"\/><\/a><\/figure>\n\n\n\n<p>Enable authorization of the Self-built App to all user<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207083900691.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1490\" height=\"659\" src=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207083900691.png\" alt=\"\" class=\"wp-image-1074\"\/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Create_Social_IDP\"><\/span>Create Social IDP<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207083224238.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1038\" height=\"654\" src=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207083224238.png\" alt=\"\" class=\"wp-image-1067\" style=\"aspect-ratio:1.5871559633027523;width:569px;height:auto\"\/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207083335369.png\"><img loading=\"lazy\" decoding=\"async\" width=\"824\" height=\"447\" src=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207083335369.png\" alt=\"\" class=\"wp-image-1069\" style=\"aspect-ratio:1.8434004474272931;width:572px;height:auto\"\/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207083414228.png\"><img loading=\"lazy\" decoding=\"async\" width=\"856\" height=\"368\" src=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207083414228.png\" alt=\"\" class=\"wp-image-1070\" style=\"aspect-ratio:2.3260869565217392;width:567px;height:auto\"\/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207083619357.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1122\" height=\"820\" src=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207083619357.png\" alt=\"\" class=\"wp-image-1071\"\/><\/a><\/figure>\n\n\n\n<p>Link the social IDP to Self-built app<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207083727437.png\"><img loading=\"lazy\" decoding=\"async\" width=\"703\" height=\"746\" src=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207083727437.png\" alt=\"\" class=\"wp-image-1072\" style=\"aspect-ratio:0.9423592493297587;width:599px;height:auto\"\/><\/a><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Test_The_Social_Sign_On_Process\"><\/span>Test The Social Sign On Process<span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<p>After comletion of the configuration, we test the Oracle APEX application login by entering its home URL in browser.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207084832291.png\"><img loading=\"lazy\" decoding=\"async\" width=\"626\" height=\"432\" src=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207084832291.png\" alt=\"\" class=\"wp-image-1079\" style=\"aspect-ratio:1.4490740740740742;width:506px;height:auto\"\/><\/a><\/figure>\n\n\n\n<p>Redirect has failed because we haven&#8217;t set redirect_uri of Oracle APEX in Self-built App. To resolve it, we get the redirect_uri from browser&#8217;s URL. Here we can get it as &#8220;https:\/\/www.linyinghao.cn\/ords\/apex_authentication.callback&#8221;.<br>Then we set it in the Login Callback URL of Self-built App.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207085156490.png\"><img loading=\"lazy\" decoding=\"async\" width=\"872\" height=\"582\" src=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207085156490.png\" alt=\"\" class=\"wp-image-1080\" style=\"aspect-ratio:1.4982817869415808;width:840px;height:auto\"\/><\/a><\/figure>\n\n\n\n<p>After the modification, we can login without error. Then we test logout.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207091524969.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1512\" height=\"363\" src=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207091524969.png\" alt=\"\" class=\"wp-image-1085\"\/><\/a><\/figure>\n\n\n\n<p>Similarly, we get logout error because we haven&#8217;t set post_logout_redirect_uri of Oracle APEX in Self-built App.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207091558690.png\"><img loading=\"lazy\" decoding=\"async\" width=\"588\" height=\"433\" src=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207091558690.png\" alt=\"\" class=\"wp-image-1086\"\/><\/a><\/figure>\n\n\n\n<p>After setting the Logout Callback URL, all issue has been resolved!<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207091850468.png\"><img loading=\"lazy\" decoding=\"async\" width=\"876\" height=\"761\" src=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2023\/12\/20231207091850468.png\" alt=\"\" class=\"wp-image-1087\" style=\"aspect-ratio:1.1511169513797634;width:841px;height:auto\"\/><\/a><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>This article is used to introduce how to integrate Oracle APEX and WeChat, in order to achieve login to Oracle APEX using WeChat scanning<\/p>\n","protected":false},"author":3,"featured_media":923,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[17,19,24],"class_list":["post-1018","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-2","tag-apex","tag-sso","tag-wechat"],"_links":{"self":[{"href":"https:\/\/www.linyinghao.cn\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/1018","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.linyinghao.cn\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.linyinghao.cn\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.linyinghao.cn\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.linyinghao.cn\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1018"}],"version-history":[{"count":51,"href":"https:\/\/www.linyinghao.cn\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/1018\/revisions"}],"predecessor-version":[{"id":1105,"href":"https:\/\/www.linyinghao.cn\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/1018\/revisions\/1105"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.linyinghao.cn\/wordpress\/index.php?rest_route=\/wp\/v2\/media\/923"}],"wp:attachment":[{"href":"https:\/\/www.linyinghao.cn\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1018"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.linyinghao.cn\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1018"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.linyinghao.cn\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1018"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}