0

I'm using okta-sdk-java in my application to implement okta based login authentication. I'm able to successfully login the app with the user created in Okta developer console. but while trying to create a new user to my okta application-group through code, I'm getting the API Validation failed error

I've tried as mentioned in the Git hub article, I've created a new Token in Okta developer console. I have copied the created super api token and used it in the application like below

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;
}

The expected result is that the new user should be created under "my-group" group but getting the below error

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)
Dushyant Tankariya
  • 1,432
  • 3
  • 11
  • 17
Heisenberg
  • 147
  • 1
  • 4
  • 14
  • The error message mentions `3 causes`. Okta documentation (on https://developer.okta.com/docs/reference/api/users/#get-user) makes me believe that somewhere in the HTTP response there should be a JSON array with three _causes_ in it. – Lars Christian Jensen Jul 23 '19 at 06:37

1 Answers1

0

There are multiple reasons to get this error with Error code E0000001 API validation failed.

One of the prominent reason would be password pattern or sequence. There are password rules defined for Okta integration.

Basic rule: Password 'Does not contain any part of username/email' logically

Examples:

Username mike.ross@business.com contains the following parts: mike, ross and business. If User attempts to set password to mike123456. Password is not accepted, because mike is considered as a username/email "part".

May this helps.

Prat
  • 143
  • 3
  • 17