将令牌/值传递给应用程序快速定制认证方案

问题描述:

我试图从外部应用程序将加密的令牌传递到Application Express。我想在自定义身份验证方案中读取和使用此令牌,以将用户身份验证到应用程序中。将令牌/值传递给应用程序快速定制认证方案

这样做的最好方法是什么?起初,我试图令牌只是追加到URL,例如:

/pls/apex/f?p=999:1&Token=XXXXXXXX 

但随后的Apex返回一个404

那么,我试图使用Application Express会话值发送在令牌,创建这样一个URL:

f?p=999:1:::::TOKEN:XXXXXXXX 

然后我的哨兵功能我会做这样的事情:

v_token := V('TOKEN') 

为了得到它。然而,这也不起作用,我认为是因为当哨兵函数执行时会话尚未建立?甚至有可能这样做? (因为没有这个名称的项目,并且没有页面尚未创建它...)

有没有更好的方法来做我想做的事情?如果我将它添加为HTTP Header上游,我可以在哨兵函数中以某种方式读取它吗?也许与owa_util.get_cgi_env?这是否可以从请求中读取HTTP标题?

谢谢

如果别人运行到这样的事情 - 我想出了一个解决方法。

只要把令牌中的URL的“价值”会话变量部分,像这样

f?p=999:1::::::XXXXXXXX 

然后在“哨兵功能”我能得到整个查询字符串是这样的:

v_query_str := owa_util.get_cgi_env('QUERY_STRING'); 

然后我可以拆分v_query_str:并获得第8个令牌,这是我所需要的。

我发现了一些使用apex_util.string_to_table来分割字符串的例子,很好地工作。