将令牌/值传递给应用程序快速定制认证方案
问题描述:
我试图从外部应用程序将加密的令牌传递到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
来分割字符串的例子,很好地工作。