我在应用程序中使用okta-sdk-java
来实现基于okta
的登录身份验证。我可以使用在Okta developer console
中创建的用户成功登录该应用。但是在尝试通过代码为我的okta应用程序组创建新用户时,出现了 API验证失败错误
我已经尝试过,如Git中枢文章所述,我已经在Okta developer console
中创建了一个新令牌。我已复制创建的超级API令牌,并在如下所示的应用程序中使用了它
private String oktaBaseUri;
private String oktaDomain;
private AuthenticationClient oktaAuthClient;
private String relayState;
private Client oktaClient;
private String apiToken;
@PostConstruct
private void init() {
oktaBaseUri = System.getProperty("okta.base.uri", "http://localhost:8080");
oktaDomain = System.getProperty("okta.domain", "https://XXXXXXXXXXXXXXXXXXXX.com");
relayState = System.getProperty("relay.state", "/app.menu/");
apiToken = System.getProperty("okta.api.token", "00XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXeg");
buildOktaClient();
}
private void buildOktaClient() {
oktaAuthClient = AuthenticationClients.builder().setOrgUrl(oktaDomain).build();
oktaClient = Clients.builder().setClientCredentials(new TokenClientCredentials(apiToken)).setOrgUrl(oktaDomain).build();
}
public User createOktaUser(ObjectVO objectVO) {
User user = null;
UserBuilder userBuilder = UserBuilder.instance().setEmail(objectVO.getUpn()).setFirstName(objectVO.getFirstNm()).setLastName(objectVO.getLastNm()).setPassword(objectVO.getPassword().toCharArray());
userBuilder.setActive(true);
user = userBuilder.buildAndCreate(oktaClient);
user.addToGroup("my-group");
return user;
}
预期结果是应在“我的组”组下创建新用户,但出现以下错误
Caused by: com.okta.sdk.resource.ResourceException: HTTP 400, Okta E0000001 (Api validation failed: login - '3 causes'), ErrorId oaevTzn-FnlTVGpgmb32W9K4A
at com.okta.sdk.impl.ds.DefaultDataStore.execute(DefaultDataStore.java:453)
at com.okta.sdk.impl.ds.DefaultDataStore.lambda$save$1(DefaultDataStore.java:314)
at com.okta.sdk.impl.ds.DefaultFilterChain.filter(DefaultFilterChain.java:47)
at com.okta.sdk.impl.ds.cache.WriteCacheFilter.filter(WriteCacheFilter.java:34)
at com.okta.sdk.impl.ds.DefaultFilterChain.filter(DefaultFilterChain.java:52)
答案 0 :(得分:0)
使用错误代码E0000001 API validation failed
出现此错误有多种原因。
一个突出的原因是密码模式或密码序列。为Okta集成定义了密码规则。
基本规则:密码“逻辑上不包含用户名/电子邮件的任何部分”
示例:
用户名 mike.ross@business.com
包含以下部分:迈克,罗斯和商业。 如果用户尝试将密码设置为 mike123456 。密码不被接受,因为迈克被认为是用户名/电子邮件的“组成部分”。
这会有所帮助。