2016-12-04 6 views
1

Я только начал использовать библиотеку stormpath-default-spring-boot-starter (1.2.0) для новой платформы Rest API, которую мы строим. Я ожидал, что файл cookie доступа будет создан следующим кодом для аутентификации пользователя, так что последующие вызовы API могут быть аутентифицированы куки-файлом. Учетная запись аутентифицирована, однако cookie не генерируется.StormPath Spring Boot Authentication 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, а не интеграция, например, интеграция Spring Spring Boot.

Когда вы используете стартовый стартовый стартовый загрузчик по умолчанию Stormpath, вы автоматически получаете кучу конечных точек, которые вы можете использовать для аутентификации и настройки cookie.

Например, у вас есть конечная точка /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_token и refresh_token печенье, а также ответ JSON, содержащий информацию об учетной записи.

Если вы хотите использовать oauth2, то есть /oauth/token конечная точка, которая поддерживает как grant_type=password и grant_type=client_credentials потока:

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

Вы получите ответ вроде:

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

Я надеюсь, это помогает!

Полное раскрытие информации: Я являюсь одним из разработчиков евангелистов Java-разработчика Stormpath

+0

Отлично. Благодаря! – Faizal

+0

отлично! Пожалуйста, примите ответ выше. Благодарю. – afitnerd

+0

вы также можете поделиться любой документацией по включению CORS для этой установки по умолчанию StormPath? благодаря! – Faizal