2017-04-06 11 views
1

Okta의 API를 사용하여 Okta를 자체 IdP 서버에 통합합니다.Okta : API 호출을 통해 인증 코드를 가져 오지 못했습니다.

나는 아래의 단계를 수행하여 인증 코드 흐름을 구현 해요 :

  1. 을 내 자신의 서버에서 sessionToken를 얻기 위해 /api/v1/authn 엔드 포인트를 사용합니다.

  2. sessionToken이 엔드 포인트 호출하여 승인을 얻기 위해 사용 : 그것은 해야하는 /oauth2/v1/authorize?client_id=" + clientId + "&sessionToken=" + sessionToken + "&response_type=code&response_mode=query&scope=openid&redirect_uri=" + redirectUrl + "&state=evanyang&nonce="

이 상태 코드 302와 리디렉션 URL이 포함 된 Location 헤더뿐만 아니라 code 값으로 응답을 반환하기를 .

그러나 상태 코드가 200이고 Location 헤더가없는 상태에서 "지원되지 않는 브라우저를 사용 중입니다."라는 HTML 본문이 계속 표시됩니다. 및 "브라우저에서 Javascript가 비활성화되었습니다." API 문서에 따르면

: An Okta one-time sessionToken. This allows an API-based user login flow (rather than Okta login UI).

내가 API를 통해 인증 코드를 얻기를위한 여분의 요구 실종 : http://developer.okta.com/docs/api/resources/oidc.html#authentication-requestsessionToken 매개 변수는이 작업을 수행하기에 충분? 도와주세요. 사전에

감사합니다 :)

답변

0

인증 코드 부여 유형 거기에 권한 부여 엔드 포인트는 브라우저가 아닌 브라우저가 아닌 클라이언트를 통해 액세스 할 수하기위한 것입니다.

0

이 문제는 세션 토큰 및 인증 코드를 가져 오는 중 세션 ID를 얻음으로써 발생합니다. 세션 토큰을 사용하여 세션 ID를 얻으면이 토큰이 유효하지 않게되어 더 이상 인증 코드를 가져올 수 없습니다.

Okta, Authorization Code 부여 유형 및 승인 엔드 포인트에 따르면 세션 토큰이 요청에 제공된 경우 http://developer.okta.com/docs/api/resources/oidc.html#authentication-request 인 경우 API 기반 웹 앱에서도 사용할 수 있습니다. 실제로,이 스크립트 (https://github.com/SohaibAjmal/Okta-OpenId-Scripts)를 사용하여 플로우를 완료 할 수 있습니다.