2016-12-04 11 views
1

ビルド中の新しいRest APIプラットフォーム用のstormpath-default-spring-boot-starter(1.2.0)ライブラリを使い始めました。次のAPI呼び出しがCookieによって認証されるようにユーザーを認証する際に、アクセスCookieが次のコードによって生成されることを期待していました。アカウントは認証されますが、クッキーは生成されません。StormPath Spring Boot認証Cookieの生成

AuthenticationRequest request = UsernamePasswordRequests.builder() 
.setUsernameOrEmail(userId) 
.setPassword(pwd) 
.withResponseOptions(UsernamePasswordRequests.options().withAccount()) 
.build(); 
Account account = null; 

try { 
account = app.authenticateAccount(request).getAccount(); 
} 
catch (ResourceException ex) { 
throw(ex); 
} 

Following here is the property file entries, 

stormpath.spring.security.enabled = false 
security.basic.enabled = false 

Help is much appreciated. 

答えて

4

ここでは、コンテキストを混在させている可能性があります。

提供されたコードは、Java SDKを直接使用していて、Stormpath Spring Boot統合などの統合を使用していない場合に必要な手動コードのタイプのようです。

Stormpath Default Spring Boot Starterを使用している場合は、エンドポイントが自動的に取得され、認証に使用してクッキーを設定できます。

たとえば、/loginエンドポイントがあります。あなたはこのようになりますログインモデルを取り戻すだろう

curl localhost:8080/login

あなたはあなたの例のアプリを起動した場合、あなたがに行くことができるはず

{ 
    "form": { 
     "fields": [ 
      { 
       "name": "login", 
       "label": "Username or Email", 
       "placeholder": "Username or Email", 
       "required": true, 
       "type": "text" 
      }, 
      { 
       "name": "password", 
       "label": "Password", 
       "placeholder": "Password", 
       "required": true, 
       "type": "password" 
      } 
     ] 
    } 
} 

あなたはPOSTで認証できます:

curl -v -H "Content-Type: application/json" -X POST \ 
-d '{"login": "<email>", "password": "<password>"}' \ 
http://localhost:8080/login 

このような応答:

> POST /login HTTP/1.1 
> Host: localhost:8080 
< HTTP/1.1 200 
< Set-Cookie: access_token=eyJraWQiOiJSOTJTQkhKQzFVNERBSU1HUTNNSE9HVk1YIiwic3R0IjoiYWNjZXNzIiwiYWxnIjoiSFMyNTYifQ...;Max-Age=3600;path=/;HttpOnly 
< Set-Cookie: refresh_token=eyJraWQiOiJSOTJTQkhKQzFVNERBSU1HUTNNSE9HVk1YIiwic3R0IjoicmVmcmVzaCIsImFsZyI6IkhTMjU2In0...;Max-Age=5184000;path=/;HttpOnly 
< Content-Type: application/json 
< Transfer-Encoding: chunked 
< Date: Mon, 05 Dec 2016 05:30:25 GMT 
< 
* Connection #0 to host localhost left intact 
{ 
    "account": { 
     "href": "https://api.stormpath.com/v1/accounts/<account id>", 
     "createdAt": "2016-03-04T06:29:48.506Z", 
     "modifiedAt": "2016-08-17T18:01:07.812Z", 
     "username": "<username>", 
     "email": "<email>", 
     "givenName": "<givenName>", 
     "middleName": null, 
     "surname": "<surname>", 
     "status": "ENABLED", 
     "fullName": "<full name>", 
     "emailVerificationStatus": null, 
     "passwordModifiedAt": "2016-05-24T02:14:01.000Z" 
    } 
} 

応答がaccess_tokenrefresh_tokenクッキーなどのアカウント情報を含むJSON応答の両方が含まれています。あなたがのOAuth2を使用したい場合は

は、あなたがサポートしている/oauth/tokenエンドポイントを持って、両方のgrant_type=passwordgrant_type=client_credentials流れ:

> POST /oauth/token HTTP/1.1 
> Host: localhost:8080 
< HTTP/1.1 200 
< Set-Cookie: access_token=eyJraWQiOiJSOTJTQkhKQzFVNERBSU1HUTNNSE9HVk1YIiwic3R0IjoiYWNjZXNzIiwiYWxnIjoiSFMyNTYifQ...;Max-Age=3600;path=/;HttpOnly 
< Set-Cookie: refresh_token=eyJraWQiOiJSOTJTQkhKQzFVNERBSU1HUTNNSE9HVk1YIiwic3R0IjoicmVmcmVzaCIsImFsZyI6IkhTMjU2In0...;Max-Age=5184000;path=/;HttpOnly 
< Cache-Control: no-store, no-cache 
< Pragma: no-cache 
< Content-Type: application/json;charset=ISO-8859-1 
< Content-Length: 933 
< Date: Mon, 05 Dec 2016 05:38:53 GMT 
< 
* Connection #0 to host localhost left intact 
{ 
    "access_token": "eyJraWQiOiJSOTJTQkhKQzFVNERBSU1HUTNNSE9HVk1YIiwic3R0IjoiYWNjZXNzIiwiYWxnIjoiSFMyNTYifQ...", 
    "refresh_token": "eyJraWQiOiJSOTJTQkhKQzFVNERBSU1HUTNNSE9HVk1YIiwic3R0IjoicmVmcmVzaCIsImFsZyI6IkhTMjU2In0...", 
    "token_type": "Bearer", 
    "expires_in": 3600 
} 

私は願っています:あなたが好きなレスポンスを得るでしょう

curl -v -X POST \ 
-d grant_type=password -d username=<email> -d password=<password> \ 
http://localhost:8080/oauth/token 

これは役に立ちます!

完全開示:私はStormpathのJava開発者エバンジェリストの1人です

+0

優れています。ありがとう! – Faizal

+0

素晴らしい!上記の回答を受け入れてください。ありがとう。 – afitnerd

+0

このStormPathのデフォルト設定でCORSを有効にすることに関するドキュメントも共有してください。ありがとう! – Faizal

関連する問題