2016-02-29 61 views
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 Header上游,我可以在哨兵函數中以某種方式讀取它嗎?也許與owa_util.get_cgi_env?這是否可以從請求中讀取HTTP標題?

謝謝

回答

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來分割字符串的例子,很好地工作。

相關問題