将令牌/值传递到应用程序中表示自定义身份验证方案

时间:2016-02-29 20:11:58

标签: oracle-apex oracle-apex-5

我正在尝试将加密的令牌从外部应用程序传递到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标头,我可以在哨兵功能中以某种方式阅读吗?也许与owa_util.get_cgi_env?这是否可以从请求中读取HTTP标头?

谢谢

1 个答案:

答案 0 :(得分:1)

如果有其他人遇到这样的事情 - 我想出了一个解决方法。

只需将令牌放在URL的“value”会话变量部分,就像这样

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

然后在“哨兵功能”中,我可以得到如下的整个查询字符串:

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

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

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