1

我正在尝试将加密令牌从外部应用程序传递到 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 标头,我可以在 sentry 函数中以某种方式读取它吗?也许使用 owa_util.get_cgi_env?从请求中读取 HTTP 标头是否有效?

谢谢

4

1 回答 1

1

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

只需将令牌放在 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用于拆分字符串的示例,效果很好。

于 2016-02-29T23:20:41.680 回答