エンジニアとしての市場価値を測りませんか?PR

企業からあなたに合ったオリジナルのスカウトを受け取って、市場価値を測りましょう

0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

MicronautのSession Cookieの設定方法

Last updated at Posted at 2021-04-24

やりたいこと

MicronautでSessionベースの認証の仕方については、Micronaut SecurityのSession項目に記載されている.

しかし、発行されるCookieの設定(name, path, expire, samesiteなど)について設定したいのに、設定方法が記載されていない.
JWTについては、記載されているのに記載されていないので、どうやれば設定できるかを調べたので説明します。

設定方法

調査すると、HttpSessionに関しては、HttpSessionConfigurationというのがあり、これは、CookieConfigurationインタフェースを実装しているので、これの設定方法が分かればいいことがわかります。

HttpSessionConfigurationは、@ConfigurationProperties(value="http")となっているので、httpのキー配下にCookieConfigurationの項目を設定すればいいことがわかります。

また、HttpSessionConfigurationは、SessionConfigurationを継承しており、SessionConfigurationは@ConfigurationProperties(value="micronaut.session")となっているので、micronaut.session.httpに設定すればいいことがわかりました。
実際に試してみます。

未設定の場合(デフォルト)

$ curl -X POST -i \
> -H "Content-Type: application/json" \
> -d '{"username": "test", "password": "test"}' \
> http://localhost:8080/login

HTTP/1.1 303 See Other
Location: /login-success
Authorization-Info: 44e65657-e86b-4215-9f83-4edd4ae22ea0
set-cookie: SESSION=NDRlNjU2NTctZTg2Yi00MjE1LTlmODMtNGVkZDRhZTIyZWEw; Path=/; HTTPOnly
Date: Sat, 24 Apr 2021 11:12:18 GMT
connection: keep-alive
transfer-encoding: chunked

キー名は、SESSIONでPathは/で、HTTPOnlyが設定された状態です。

設定した場合

application.yml
micronaut:
  session:
    http:
      cookie-name: MYSESSION
      cookie-path: /api/
      cookie-secure: true
      cookie-same-site: Strict

$ curl -X POST -i \
> -H "Content-Type: application/json" \
> -d '{"username": "test", "password": "test"}' \
> http://localhost:8080/login

HTTP/1.1 303 See Other
Location: /login-success
Authorization-Info: b628cd4c-3e77-4daa-9860-8ed686fe40dd
set-cookie: MYSESSION=YjYyOGNkNGMtM2U3Ny00ZGFhLTk4NjAtOGVkNjg2ZmU0MGRk; Path=/api/; Secure; HTTPOnly; SameSite=Strict
Date: Sat, 24 Apr 2021 11:09:50 GMT
connection: keep-alive
transfer-encoding: chunked

無事にキー名がMYSESSIONとなり、Path, Secure, SameSiteの設定を付加することができた。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Comments

No comments

Let's comment your feelings that are more than good

0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?