![](/img/trans.png)
[英]How do I set up basic authentication on specific actions in my asp net core 3.1 controller?
[英]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.