- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 Java 的 RestAssured API 进行 OKTA 身份验证。有问题的身份验证类型是多因素的,虽然我总是能够在 Google Chrome 中成功进行此身份验证,但在 RestAssured 中它始终失败,并显示 403,尽管匹配了所有请求 header 和 cookie。我的最终目标是获取不记名身份验证 token ,以便能够在登录后运行服务。
本质上,这是我调用的服务序列:
1) [已编辑]/api/v1/authn;我提供我的用户名和密码,以及一些字母数字状态 token 。 (我在 RestAssured 的 RequestSpecification 周围使用包装类:)这会成功返回 200:
// Create a brand new request to login using OKTA.
RequestWrapper requestWrapper11 = new RequestWrapper();
requestWrapper11.setResponseContentType(ContentType.JSON);
requestWrapper11.setAcceptedContentType(ContentType.JSON);
requestWrapper11.setHTTPMethod(Method.POST);
requestWrapper11.setRequestPayload(new HashMap<>() {
{
put("username", "[redacted]");
put("password", "[redacted]");
put("options", new HashMap<String, Object>() {
{ put("warnBeforePasswordExpired", true); }
{ put("multiOptionalFactorEnroll", true); }
});
}
});
// Authenticate and get a brand new state token.
requestWrapper11.setBaseURL(new URL("[redacted]/api/v1/authn"));
ResponseWrapper response = requestWrapper11.executeAndGetResponse();
通过此服务调用,我得到了下一步使用的状态 token 以及因子 ID。
2) 然后,我调用 POST 服务 [redacted]/api/v1/authn/factors 并提供安全问题的答案:(这也会成功返回 200):
{answer:“[redacted_1]”,stateToken:“[state_token]”}
RequestWrapper requestWrapper2 = new RequestWrapper();
requestWrapper2.setResponseContentType(ContentType.JSON);
requestWrapper2.setAcceptedContentType(ContentType.JSON);
requestWrapper2.setHTTPMethod(Method.POST);
requestWrapper2.setRequestPayload(new HashMap<>() {
{
put("answer", "[redacted]");
put("stateToken", stateToken);
}
});
requestWrapper2.setOverrideQueryParams(new HashMap<>() {
{ put("rememberDevice", false); }
});
// Authenticate and get a brand new state token.
requestWrapper2.setBaseURL(new URL("[redacted]/api/v1/authn/factors/" + factorId + "/verify"));
3) 最后,我进行 GET 调用 [redacted]/login/step-up/redirect?stateToken=[state_token] 以返回用于身份验证目的的特殊代码。
RequestWrapper requestWrapper4 = new RequestWrapper();
// requestWrapper4.setAllowRedirects(true);
requestWrapper4.setOverrideQueryParams(new HashMap<>() {
{put("stateToken",stateToken); }
});
requestWrapper4.setHeader("Connection", "Keep-Alive");
requestWrapper4.setHeader("Host", "[redacted]");
requestWrapper4.setHeader("Accept", "text/html,application/xhtml+xml,application/xml" +
";q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9");
requestWrapper4.setHeader("Accept-Encoding", "gzip, deflate, br");
requestWrapper4.setHeader("Accept-Language", "en-US,en;q=0.9");
requestWrapper4.setHeader("Sec-Fetch-Dest","document");
requestWrapper4.setHeader("Sec-Fetch-Mode", "navigate");
requestWrapper4.setHeader("Sec-Fetch-Site", "same-origin");
requestWrapper4.addCookies(responseWrapper2.cookies);
requestWrapper4.addCookie("oktaStateToken", stateToken);
requestWrapper4.addCookie("t", "summer");
requestWrapper4.addCookie("DT", "DI0--aZ4ipPS8mFXhEWHFwXUw");
requestWrapper4.addCookie("ADRUM_BTa", "R:0|g:dd262b5c-ae86-4a1d-86aa-a89b3fed2bed|n:Okta_6d5b1e30-d05a-4894-a37b-81b5f6c60e0e");
requestWrapper4.addCookie("ADRUM_BT1", "R:0|i:617|e:41");
requestWrapper4.setHTTPMethod(Method.GET);
requestWrapper4.setHeader("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36");
requestWrapper4.setBaseURL(new URL("[redacted]/login/step-up/redirect"));
ResponseWrapper responseWrapper4 = requestWrapper4.executeAndGetResponse();
当我正常使用浏览器进行身份验证时,这三个服务调用在浏览器中毫无问题地进行,并且全部返回 200 或 302。但是,每当我使用 RestAssured API 运行这些服务时,我总是在第三个服务上收到 403无论作为查询参数 {stateToken} 传入的 token 是否合法,都会执行。当这个参数不是通过 RestAssured API 传入时,我总是得到 400,所以我知道这个方法调用区分是否传入了状态 token 。
我的问题是:上面的一组步骤中是否遗漏了任何值得注意的内容,导致 403 始终通过一种媒体返回,而不是通过网络浏览器返回?是否存在阻止使用 RestAssured API 进行身份验证的措施?如果是这样,我是否可以采取其他路线来获取不记名 token ?
最佳答案
我想到了一些事情。
1.) 您的回复是否包含回复 #2 中的升级链接? https://developer.okta.com/docs/reference/api/authn/#response-example-after-authentication-and-mfa-are-complete-for-step-up-authentication-with-okta-session
2.) 如果可能,我建议使用 OAuth 流程(或 SAML),而不是使用 Authn API
3.) Authn API 是一个状态机,您不能总是假设您可以按该顺序执行这些请求。
Okta 还有一个 Authn SDK:https://github.com/okta/okta-auth-java (但同样,我们建议尽可能使用 OAuth)
关于java - OKTA 多重身份验证 + Java + RestAssured :/login/step-up/redirect always returns 403 through RESTAssured,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61783815/
我有一个已集成 OKTA 的 React native ios 应用程序,但我还需要直接在我的应用程序中使用 OKTA 自定义登录页面,这样用户就不会重定向到 okta 页面进行登录。 我可以使用 @
我一直在研究针对 Okta REST API 的用户生命周期事件。 我对各种 Okta 用户状态感到困惑,特别是 STAGED、ACTIVE 和 PROVISIONED。我看过this diagram
我正在使用 Okta C# sdk 进行开发。我在 Okta 中创建了一些自定义用户配置文件属性。我能够创建用户并将值保存在自定义属性中。 但正如我所见,当您更新个人资料数据时,您必须再次提供所有详细
我正在使用 okta sign-in widget在我们的应用程序中对用户进行身份验证。问题是,当在 Safari 中选中“防止跨站点跟踪”时(FF 具有类似的设置),登录仍然有效,但单点登录、MFA
我想了解以下场景是否可以使用 Okta 开发人员帐户来完成。我想保护一个用 Python/Flask 编写的 API,该 API 旨在由另一个后端服务以编程方式访问。没有用户交互。到目前为止,我所能找
我喜欢使用 spring-security-saml2-service-provider 的想法 - 来自文档:https://docs.spring.io/spring-security/refer
如何在 Okta 中以编程方式实现 MFA?我的要求是这样的: 对于某些用户,我想使用 Okta Verify 和一些额外的安全问题。 对于其他一些用户,我想使用 Google 身份验证以及一些额外的
我们有一个绑定(bind)到 Active Directory 的 Okta 实例。所有用户都在 AD 中创建并输入 Okta。配置文件由 AD 掌握。我们已将几个自定义属性添加到 Okta 配置文件
我们有一个 Vault 集群设置,我们正在尝试使用 Okta 对 Vault 进行身份验证。已启用身份验证并对其进行配置: vault auth enable okta vault write aut
我想使用 okta java API 验证我的应用程序。当前根据给定的代码,我被重定向到 okta,我输入我的凭据,然后它会将我踢回应用程序,但我的要求是在中输入我的凭据我的登录屏幕并在验证和成功登录
Gentics Mesh 内置了对 Keycloak 的支持,但我想改用 Okta。 最佳做法是什么? 是否需要修改 Mesh 源代码? 或者也许我应该在中间件层处理身份验证? 或者我可以实现 Aut
我正在尝试使用 Okta's Sign-In Widget和 Okta API 来找出用户与哪些组相关联。 Okta API 返回用户关联的组,但我只能在从管理控制台转到它时使用它,所以这必须基于 O
使用 okta-signin-widget 和 okta-auth-js 有什么区别? 我可以说 okta-auth-js 提供了身份验证的所有功能,并且小部件使用这些功能 + 构建视觉效果吗? 最佳
因此,我尝试将 Okta 设置为身份提供商,并且我想使用服务提供商启动的工作流程登录到应用程序。我已在 Okta 中设置模板 SAML 2.0 应用程序,并在服务提供商上设置入口点和 SAML 证书。
我的 webflux api 中有一个 CORS webFilter,当我通过 postman 为飞行前检查 list 发出选项请求时,我得到了带有正确 header 的响应。但是,当我使用 Axio
从API docs尚不清楚,一旦停用,是否可以在Okta中激活用户。 我可以看到它们在停用后会变为已取消配置状态,而且我知道该用户将从任何应用程序中撤消(全部根据文档),但是我的问题在文档中没有得到回
我正在尝试从部署到 Azure 的 Kentor AuthServices 获取示例 MVC 应用程序,并使用 Okta 作为 IDP。我跳过了几个障碍,但偶然发现了 CryptographicExc
如何在没有电子邮件地址的情况下创建唯一的用户名? 当我如下发送 curl 请求时 curl -X POST \ 'https://xxxx.oktapreview.com/api/v1/users
我找到了一个使用 OKTA's Sign-in Widget 构建 Angular 4 应用程序的教程.太棒了,我向所有刚接触 OKTA 的人推荐它。 你可以在这个 URL 找到它: https://
我正在尝试在我的 React 应用程序上设置 Okta 身份验证。在客户端,我能够成功进行身份验证并获得访问 token 。但是,当我尝试使用 OktaJwtVerfier 对后端服务进行身份验证时,
我是一名优秀的程序员,十分优秀!