Submit Search
Use JWT access-token on Grails REST API
4 likes
13,928 views
U
Uehara Junji
It is easy to use JWT authentication token with Grails Spring Security REST plugin.
Technology
Read more
1 of 17
Download now
Downloaded 14 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
More Related Content
PDF
Groovy Bootcamp 2015 by JGGUG
Uehara Junji
PDF
Groovy Shell Scripting 2015
Uehara Junji
PDF
Java開発の強力な相棒として今すぐ使えるGroovy
Yasuharu Nakano
KEY
G* Workshop in fukuoka 20120901
Uehara Junji
PDF
Introduce Groovy 2.3 trait
Uehara Junji
PDF
Java SE 9の紹介: モジュール・システムを中心に
Taku Miyakawa
PDF
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
JustSystems Corporation
PDF
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Yoshifumi Kawai
Groovy Bootcamp 2015 by JGGUG
Uehara Junji
Groovy Shell Scripting 2015
Uehara Junji
Java開発の強力な相棒として今すぐ使えるGroovy
Yasuharu Nakano
G* Workshop in fukuoka 20120901
Uehara Junji
Introduce Groovy 2.3 trait
Uehara Junji
Java SE 9の紹介: モジュール・システムを中心に
Taku Miyakawa
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
JustSystems Corporation
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Yoshifumi Kawai
What's hot
(18)
PPTX
Retrofit2 &OkHttp でAndroidのHTTP通信が快適だにゃん
removed_96f4639f4009e61a478bf38f188e8404
PDF
インフラ自動化とHashicorp tools
Uchio Kondo
PDF
Reactive Extensionsで非同期処理を簡単に
Yoshifumi Kawai
PDF
linq.js - Linq to Objects for JavaScript
Yoshifumi Kawai
PPTX
RLSを用いたマルチテナント実装 for Django
Takayuki Shimizukawa
PDF
Quarkus による超音速な Spring アプリケーション開発
Chihiro Ito
PDF
Head toward Java 16 (Night Seminar Edition)
Yuji Kubota
PDF
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Yoshifumi Kawai
PDF
History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法
Yoshifumi Kawai
PDF
Jjug 20140430 gradle_basic
Takuma Watabiki
PPT
第4回勉強会 Groovyの文法からSpockまで
Mugen Fujii
PDF
Synthesijer jjug 201504_01
Takefumi MIYOSHI
PDF
Introduction to Spock
Takahiro Sugiura
PDF
キメるClojure
Yoshitaka Kawashima
PDF
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
Hironobu Isoda
PDF
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
bitter_fox
PDF
Reactive Webアプリケーション - そしてSpring 5へ #jjug_ccc #ccc_ef3
Toshiaki Maki
PDF
Javaのログ出力: 道具と考え方
Taku Miyakawa
Retrofit2 &OkHttp でAndroidのHTTP通信が快適だにゃん
removed_96f4639f4009e61a478bf38f188e8404
インフラ自動化とHashicorp tools
Uchio Kondo
Reactive Extensionsで非同期処理を簡単に
Yoshifumi Kawai
linq.js - Linq to Objects for JavaScript
Yoshifumi Kawai
RLSを用いたマルチテナント実装 for Django
Takayuki Shimizukawa
Quarkus による超音速な Spring アプリケーション開発
Chihiro Ito
Head toward Java 16 (Night Seminar Edition)
Yuji Kubota
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Yoshifumi Kawai
History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法
Yoshifumi Kawai
Jjug 20140430 gradle_basic
Takuma Watabiki
第4回勉強会 Groovyの文法からSpockまで
Mugen Fujii
Synthesijer jjug 201504_01
Takefumi MIYOSHI
Introduction to Spock
Takahiro Sugiura
キメるClojure
Yoshitaka Kawashima
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
Hironobu Isoda
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
bitter_fox
Reactive Webアプリケーション - そしてSpring 5へ #jjug_ccc #ccc_ef3
Toshiaki Maki
Javaのログ出力: 道具と考え方
Taku Miyakawa
Ad
Viewers also liked
(7)
PDF
Indy(Invokedynamic) and Bytecode DSL and Brainf*ck
Uehara Junji
PDF
enterprise grails challenge, 2013 Summer
Uehara Junji
PDF
Shibuya JVM Groovy 20150418
Uehara Junji
PDF
Read Groovy Compile process(Groovy Benkyoukai 2013)
Uehara Junji
PDF
New features of Groovy 2.0 and 2.1
Uehara Junji
PDF
Markup Template Engine introduced Groovy 2.3
Uehara Junji
PDF
何となく勉強した気分になれるパーサ入門
masayoshi takahashi
Indy(Invokedynamic) and Bytecode DSL and Brainf*ck
Uehara Junji
enterprise grails challenge, 2013 Summer
Uehara Junji
Shibuya JVM Groovy 20150418
Uehara Junji
Read Groovy Compile process(Groovy Benkyoukai 2013)
Uehara Junji
New features of Groovy 2.0 and 2.1
Uehara Junji
Markup Template Engine introduced Groovy 2.3
Uehara Junji
何となく勉強した気分になれるパーサ入門
masayoshi takahashi
Ad
Similar to Use JWT access-token on Grails REST API
(20)
PDF
Microsoft Azure Update 20151112
Ayako Omori
PDF
VSCodeで始めるAzure Static Web Apps開発
Yuta Matsumura
PDF
Java/Androidセキュアコーディング
Masaki Kubo
PPTX
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
真吾 吉田
PDF
Windows コンテナを AKS に追加する
Yuto Takei
PPTX
Prometheus入門から運用まで徹底解説
貴仁 大和屋
PDF
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコシステムズ合同会社
PPT
Inside mobage platform
Toru Yamaguchi
PDF
Microsoft Antimalware for Azure による Azure 仮想マシンの簡易的なマルウェア対策
wintechq
PDF
[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践
de:code 2017
PDF
Unityゲームにオンラインランキングとゴースト機能を追加しよう!
史識 川原
PDF
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
normalian
PPTX
エンジニアのための Azure 基礎知識
Daiyu Hatakeyama
PDF
20150704 MS Azure最新 - innovation egg 第4回
Keiji Kamebuchi
PDF
20150127 jawsug京王線 ec2_config
Takayoshi Tanaka
PDF
ソーシャルアプリ勉強会(第一回資料)配布用
Yatabe Terumasa
PDF
IETF94 M2M Authentication関連報告
Masaru Kurahayashi
PDF
Building React, Flutter and Blazor development and debugging environment with...
Shotaro Suzuki
PDF
SCALR OSS版のインストール手順のご紹介 20131204 01
Haruhiko KAJIKAWA
PDF
201312 scalr[oss] installation_idcf
IDC Frontier
Microsoft Azure Update 20151112
Ayako Omori
VSCodeで始めるAzure Static Web Apps開発
Yuta Matsumura
Java/Androidセキュアコーディング
Masaki Kubo
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
真吾 吉田
Windows コンテナを AKS に追加する
Yuto Takei
Prometheus入門から運用まで徹底解説
貴仁 大和屋
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコシステムズ合同会社
Inside mobage platform
Toru Yamaguchi
Microsoft Antimalware for Azure による Azure 仮想マシンの簡易的なマルウェア対策
wintechq
[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践
de:code 2017
Unityゲームにオンラインランキングとゴースト機能を追加しよう!
史識 川原
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
normalian
エンジニアのための Azure 基礎知識
Daiyu Hatakeyama
20150704 MS Azure最新 - innovation egg 第4回
Keiji Kamebuchi
20150127 jawsug京王線 ec2_config
Takayoshi Tanaka
ソーシャルアプリ勉強会(第一回資料)配布用
Yatabe Terumasa
IETF94 M2M Authentication関連報告
Masaru Kurahayashi
Building React, Flutter and Blazor development and debugging environment with...
Shotaro Suzuki
SCALR OSS版のインストール手順のご紹介 20131204 01
Haruhiko KAJIKAWA
201312 scalr[oss] installation_idcf
IDC Frontier
More from Uehara Junji
(20)
PDF
Groovy kisobenkyoukai20130309
Uehara Junji
PDF
groovy 2.1.0 20130118
Uehara Junji
PDF
New feature of Groovy2.0 G*Workshop
Uehara Junji
KEY
JJUG CCC 2012 Real World Groovy/Grails
Uehara Junji
KEY
Java One 2012 Tokyo JVM Lang. BOF(Groovy)
Uehara Junji
PDF
Java x Groovy: improve your java development life
Uehara Junji
KEY
Groovy 1.8の新機能について
Uehara Junji
PDF
Let's go Developer 2011 sendai Let's go Java Developer (Programming Language ...
Uehara Junji
KEY
Jggug ws 15th LT 20110224
Uehara Junji
PDF
Easy Going Groovy 2nd season on DevLOVE
Uehara Junji
PDF
Easy Going Groovy(Groovyを気軽に使いこなそう)
Uehara Junji
PDF
GroovyServ concept, how to use and outline.
Uehara Junji
PDF
Clojure
Uehara Junji
PDF
Groovy, Transforming Language
Uehara Junji
KEY
Jggug Nagoya 20090925 Groovy
Uehara Junji
PDF
Lisp Builder
Uehara Junji
PDF
G*WS 3rd Lightning talk
Uehara Junji
PDF
Groovy Now And Future
Uehara Junji
PDF
Seasar Conference2008 Grails(Final)
Uehara Junji
PPT
Groovy Conference2008 Nttsoft
Uehara Junji
Groovy kisobenkyoukai20130309
Uehara Junji
groovy 2.1.0 20130118
Uehara Junji
New feature of Groovy2.0 G*Workshop
Uehara Junji
JJUG CCC 2012 Real World Groovy/Grails
Uehara Junji
Java One 2012 Tokyo JVM Lang. BOF(Groovy)
Uehara Junji
Java x Groovy: improve your java development life
Uehara Junji
Groovy 1.8の新機能について
Uehara Junji
Let's go Developer 2011 sendai Let's go Java Developer (Programming Language ...
Uehara Junji
Jggug ws 15th LT 20110224
Uehara Junji
Easy Going Groovy 2nd season on DevLOVE
Uehara Junji
Easy Going Groovy(Groovyを気軽に使いこなそう)
Uehara Junji
GroovyServ concept, how to use and outline.
Uehara Junji
Clojure
Uehara Junji
Groovy, Transforming Language
Uehara Junji
Jggug Nagoya 20090925 Groovy
Uehara Junji
Lisp Builder
Uehara Junji
G*WS 3rd Lightning talk
Uehara Junji
Groovy Now And Future
Uehara Junji
Seasar Conference2008 Grails(Final)
Uehara Junji
Groovy Conference2008 Nttsoft
Uehara Junji
Use JWT access-token on Grails REST API
1.
JWTトークン認証つきの Web APIを作るのは Grails+Spring Security REST
Pluginを使えば非常 に簡単である件 JGGUG G*WS LT大会 2016/05/13
2.
Copyright (C) 2016
NTT Software Corporation. All rights reserved. 2 自己紹介 上原潤二(@uehaj) NTTソフトウェア(株)Grails推進室 JGGUG運営委員 書籍: プログラミングGROOVY(技評) Grails徹底入門(翔泳社) ブログ「Grな日々」
3.
Copyright (C) 2016
NTT Software Corporation. All rights reserved. 3 Web APIの認証をどうする? • セッション・クッキー • トークンベース認証 ステートレス スケーラブル クロスドメイン 疎結合
4.
Copyright (C) 2016
NTT Software Corporation. All rights reserved. 4 Web APIの認証をどうする? • セッション・クッキー • トークンベース認証 – 払い出し方式 – 電子署名方式 • OAuth2.0 アクセストークン • 上記の簡易版としてのJWTアクセストークン使用 簡単
5.
Copyright (C) 2016
NTT Software Corporation. All rights reserved. 5 JWT(JSON Web Token) • Webアプリでclaimをうけわたすための仕様 (URL-safe) • OAuth2.0、OpenID Connectの要素技術 • 実体は電子署名+Base64されたJSON – Authorization: Bearer eyJhbGciOiJIUzI1…. • アクセストークンにも使用できる • 利点 – 払い出したトークン値の保存管理が不要 – オフライン検証、第三者による検証
6.
Copyright (C) 2016
NTT Software Corporation. All rights reserved. Spring Security REST plugin JWTトークンによ るAPI認証をデ フォルトで提供
7.
Copyright (C) 2016
NTT Software Corporation. All rights reserved. 以下の流れ •まずはRESTサーバを動かす •Spring Securityの設定 •アクセストークンを取得 •アクセストークンを使ってREST APIア クセス 7
8.
Copyright (C) 2016
NTT Software Corporation. All rights reserved. まずはRESTサーバを動かす(1) $ grails create-app restapp3 | Application created at ../restapp3 $ cd restapp3 $ mkdir -p grails-app/domain/sample $ cat << EOT > grails-app/domain/sample/Book.groovy package sample import grails.rest.* @Resource class Book { String title int price } EOT 8
9.
Copyright (C) 2016
NTT Software Corporation. All rights reserved. まずはRESTサーバを動かす(2) URLMapping grails-app/controllers/restapp3/UrlMappings.groovyに以 下を追加 package restapp3 : static mappings = { "/api/books"(resources:"book") 9
10.
Copyright (C) 2016
NTT Software Corporation. All rights reserved. まずはRESTサーバを動かす(3) 動作確認 $ grails run-app $ curl http://localhost:8080/api/books.json [] $ curl -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"title":"title", "price":100}' http://localhost:8080/api/books.json {"class":"sample.Book","id":2,"price":100,"title":"title"} $ curl http://localhost:8080/api/books.json [{"class":"sample.Book","id":1,"price":100,"title":"title"} ] $ curl http://localhost:8080/api/books/1.json {"class":"sample.Book","id":1,"price":100,"title":"title"} 10
11.
Copyright (C) 2016
NTT Software Corporation. All rights reserved. Spring Securityの設定(1) build.gradleのdependenciesに以下を設定 compile "org.grails.plugins:spring-security-core:3.0.3" compile "org.grails.plugins:spring-security- rest:2.0.0.M2“ 11
12.
Copyright (C) 2016
NTT Software Corporation. All rights reserved. Spring Securityの設定(2) $ grails run-app $ grails s2-quickstart sample User Role $ cat grails-app/conf/BootStrap.groovy import sample.* class BootStrap { def init = { servletContext -> def adminRole = new Role('ROLE_ADMIN').save() def userRole = new Role('ROLE_USER').save() def testUser = new User('me', 'password').save() UserRole.create testUser, adminRole UserRole.withSession { it.flush(); it.clear() } assert User.count() == 1 assert Role.count() == 2 assert UserRole.count() == 1 } : 12 ユーザ・ロール情報 をDB登録
13.
Copyright (C) 2016
NTT Software Corporation. All rights reserved. Spring Securityの設定(3) grails-app/conf/application.groovy に以下を追加 grails.plugin.springsecurity.userLookup.userDomainClassName = 'sample.User' grails.plugin.springsecurity.userLookup.authorityJoinClassName = 'sample.UserRole' grails.plugin.springsecurity.authority.className = 'sample.Role' grails.plugin.springsecurity.controllerAnnotations.staticRules = [[pattern:'/**', access:['ROLE_USER', 'ROLE_ADMIN']]] grails.plugin.springsecurity.filterChain.chainMap = [[ pattern: '/api/**', filters: 'JOINED_FILTERS,-anonymousAuthenticationFilter,- exceptionTranslationFilter,-authenticationProcessingFilter,- securityContextPersistenceFilter,-rememberMeAuthenticationFilter‘ ], [ pattern: '/**', filters: 'JOINED_FILTERS,-restTokenValidationFilter,- restExceptionTranslationFilter‘ ]] 13 APIを呼ぶ権限 その他の権限
14.
Copyright (C) 2016
NTT Software Corporation. All rights reserved. アクセストークンを取得 $ curl -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"username":"me", "password":"password"}' http://localhost:8080/api/login {"username":"me","roles":["ROLE_ADMIN"],"token_typ e":"Bearer","access_token":"eyJhbGciOiJIUzI1…","e xpires_in":3600,"refresh_token":"eyJhbGc…"} 14 認証エンドポイント アクセストークン (JWT) リフレッシュトークン (JWT)
15.
Copyright (C) 2016
NTT Software Corporation. All rights reserved. アクセストークンを使ってREST API アクセス $ curl -H “Accept: application/json” -H “Content-type: application/json” -H “Authorization: Bearer eyJhbGciOiJIUzI1…." -X GET http://localhost:8080/api/books.json [{"id":1,"price":100,"title":"Book Title"}] 15
16.
Copyright (C) 2016
NTT Software Corporation. All rights reserved. まとめ • GrailsでのREST API開発は超簡単 • JWT便利。メール認証などにも。 • トークン無効化が不要ならシンプル • トークン無効化するにはexpire期限を指定しリ フレッシュトークンで再発行 – http://stackoverflow.com/questions/196559 11/request-new-access-token-using- refresh-token-in-username-password-grant- in-sprin 16
17.
Copyright (C) 2016
NTT Software Corporation. All rights reserved. 参考リンク • Grails3対応のSpring Securty RESTドキュメント http://alvarosanchez.github.io/grails-spring-security- rest/latest/docs/ • Grails2対応のSpring Securty RESTドキュメント http://alvarosanchez.github.io/grails-spring-security- rest/1.5.3/docs/guide/index.html • Grails 3でWeb APIを簡単に作ろう! https://speakerdeck.com/yamkazu/grails-3deweb- apiwojian-dan-nizuo-rou 17
Download