提取APEX_AUTHENTICATION.CALLBACK返回的参数值?

问题描述 投票:0回答:1

我尝试使用 Auth0 作为 Open ID Connect 提供程序来通过 Oracle APEX 进行身份验证。通过设置身份验证方案,我可以使用 Auth0 登录,并且 APEX 可以像

#sub#
一样获得
auth0|66042494aef3827a64c1f9e5
,所以至少部分成功了。

问题是 Auth0 会使用类似

https://(myapexsite)/ords/apex_authentication.callback?code=(something)&state=(something)
的 URL 重定向到 APEX(我认为这是 OpenID Connect / OAuth2 的标准)。我需要使用
code
参数的值来与 Auth0 服务器进一步通信。但是,我不确定如何获取 APEX 中的值。它是否自动存储在某个地方?或者我应该编写自己的回调过程而不是使用标准回调过程?

APEX APEX_AUTHENTICATION.CALLBACK 的文档对此只字未提

oracle-apex openid-connect auth0
1个回答
0
投票
回答我的问题。总结一下,代码没什么用。 Oracle 已经使用了该代码,并在身份验证后过程中提供结果,例如

apex_json.get_clob('access_token')

长答案: 整个查询字符串(即上例中的

code=(something)&state=(something)

)在身份验证后过程中可用作 
owa_util.get_cgi_env('QUERY_STRING')
。要使用字符串操作程序进行提取:

procedure post_authentication is q_string varchar2(1000); start_pos number; end_pos number; BEGIN ... q_string := owa_util.get_cgi_env('QUERY_STRING'); start_pos := instr(q_string, 'code='); end_pos := instr(q_string, '&', start_pos + 1); if end_pos <= 0 then end_pos := length(q_string) + 1; end if; :G_AUTH0_CODE := substr(q_string, start_pos + length('code='), end_pos - length('code=') - 1); ... end;
重点来了:APEX已经消耗了代码(一次性的)。结果,提取出来的代码是无用的。代码的目的是检索访问令牌(除其他外),APEX 已在身份验证后过程中将其提供为 

apex_json.get_clob('access_token')

 .

将此标记为已回答(我自己)。

© www.soinside.com 2019 - 2024. All rights reserved.