簡體   English   中英

如何使用 .net sdk 通過 Okta 獲取用於基本身份驗證的 StateToken?

[英]How do I get a StateToken for basic Authentication through Okta with .net sdk?

我正在構建一個內部 Web API(asp.net),我需要將我們的 Okta 身份驗證與其集成。 我通過 NuGet 安裝了 SDK,我可以做一些簡單的事情,比如獲取用戶並查看配置文件。

不過,我真正需要做的是了解我如何獲取用戶,通過 Okta 對其進行身份驗證,然后再驗證同一個用戶。

這是我在基本概念層面所擁有的。

var oktaClient = new OktaClient(apiToken: "00vEX-jX3to71axEZ1L3luDfaAPH9d-ZPBV4coG2Ya", baseUri: new Uri(uriString: "https://ourcompany.oktapreview.com"));    

AuthClient authClient = oktaClient.GetAuthClient();    

AuthResponse response = authClient.Authenticate(username: "MyUserName@corp.ourcompany.com", password: "MyPassword");

AuthResponse huh = authClient.GetStatus(response.StateToken);

問題是我的響應不包含 StateToken。 它只包含一個 SessionToken。 所以,我真正可以使用的幫助是我所缺少的。

我瀏覽了 Okta 音樂商店( https://github.com/okta/okta-music-store )演示,但這似乎沒有回答我的問題。 也許是因為它是一個較舊的 MVC 4 應用程序並且我正在使用 WebApi 或者只是因為它是一個比我不知道的我想要完成的更復雜的示例。
我也一直在閱讀http://developer.okta.com/docs/api/getting_started/design_principles.html ,但我仍然沒有看到我錯過了什么。

我建議您查看此代碼示例,其中顯示了不同的身份驗證流程。

如果您在登錄過程中處於中間狀態,例如被提示輸入第二個因素,您只會獲得狀態令牌。 否則,如果登錄過程成功完成,您只會獲得會話令牌。

我希望這有幫助!

我也一直在努力弄清楚stateToken ,在篩選了對同一查詢的無數無用回復后,我終於找到了答案:

state ——; 防止跨站點請求偽造 (CSRF)。 可以是任何值。

來源: https : //developer.okta.com/docs/guides/add-an-external-idp/apple/create-authz-url/

我發現我確實可以提供任何任意字符串,只要它在整個用戶的授權流程中保持一致即可。

然而,我仍然不清楚的是,狀態令牌應該多久重新生成一次,以及在頁面加載之間保持該值的最佳實踐是什么。 我的假設是它應該隨機生成並存儲在會話中。

更新:我發現這個頁面討論了如何生成狀態令牌,似乎很相關。

https://pipedrive.readme.io/docs/marketplace-oauth-authorization-state-parameter

他們推薦的方法(至少對於 php )是:

// Assign to state the hashing of the session ID
$state = hash('sha256', session_id());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM