2017-03-06 1 views
0

私が開発しているREST APIを検証するテストハーネスを作成するのに忙しいです。通常の使用では、私のREST APIはOneLoginによって保護され、認証されたWebアプリケーションによって使用されます。私のテストハーネスは、自分の機能を呼び出す前にOneLoginを使って認証する必要があります。テストハーネスにはブラウザがないため、APIを介してログを記録するための正しいワークフローを理解するのには苦労しています。これまでのところ私が持っている:OneLogin Login APIの正しい流れ

  1. 要求認証トークン、サブドメイン、ユーザー名とパスワード(https://developers.onelogin.com/api-docs/1/users/create-session-login-token
  2. を使用して、セッショントークンをクライアントIDとシークレット( https://developers.onelogin.com/api-docs/1/oauth20-tokens/generate-tokens
  3. 要求を使用して認証トークン

私はセッショントークンとは何が関係しているのかよく分かりません。 I 容疑者セッション(https://developers.onelogin.com/api-docs/1/users/create-session-via-token)を作成する必要がありますが、別のURLを使用しているようです。

アイデア?

更新日:

をここに私はその最後のステップのために使用しているコードがあります。前の手順で取得したセッショントークンを渡します。

/** see https://developers.onelogin.com/api-docs/1/users/create-session-via-token */ 
public void createSession(String sessionToken) { 
    HttpPost httpPost = new HttpPost("https://admin.us.onelogin.com/session_via_api_token"); 
    List<NameValuePair> postParameters = new ArrayList<>(); 

    postParameters.add(new BasicNameValuePair("session_token", sessionToken)); 

    try (CloseableHttpClient httpClient = HttpClientBuilder.create().build()) { 
     HttpEntity entity = new UrlEncodedFormEntity(postParameters); 

     httpPost.setEntity(entity); 

     HttpResponse response = httpClient.execute(httpPost); 
     int status = response.getStatusLine().getStatusCode(); 

     System.out.println(status); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

返されたステータスコードが302であり、応答ヘッダは、Location: https://<my-company>.onelogin.comを含みます。

私はこれが何らかの理由で最後の呼び出しが失敗し、ログインページにリダイレクトされていることを意味しています。

答えて

1

あなたは正しいと思われます。

基本的に、サーバーがトークンのバックチャネル要求を行った後、session_via_api_token 'を使用してセッションを確立したり、Cookieを取得したりするために、フロントチャネル(ユーザーのブラウザ)エンドポイント '(トークンを取得するAPIとはまったく異なる種類のAPI)

+0

チップをありがとう。私は確信していなかったステップで使用していたコードで質問を更新しました。私はそれに何か間違っていることを知っているが、試して2日後に私は私の人生のために何を見ることができない! – Stormcloud

+0

また、これはRESTテストハーネス用です。これらはブラウザーに関係しません。 – Stormcloud

+0

このエンドポイントは、元のページにリダイレクトされて動作するように設計されています(古い学校のフォーム投稿を行うことができます)ので、302が正常である可能性があります。 トークンを作成するときにCORSパラメータを正しく設定すると、クロスサイトREST経由でこれを行うことができます。 CORSヘッダーを設定するには、https://developers.onelogin.com/api-docs/1/users/create -session-login-token - (Custom-Allowed-Origin-Header-1) CORSの例を参照してください。https://developers.onelogin.com/api-docs/1/samples/login-user-via- api - (Example CORS Post) –