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
Microservices /w Spring Security OAuth
Makoto Kakuta
PDF
Spring bootでweb セキュリティ(ログイン認証)編
なべ
PDF
OAuth2.0によるWeb APIの保護
Naohiro Fujie
PPTX
Spring Security 4.1 の新機能
正和 井岡
PPTX
Webアプリ開発実践tips共有会
tomo730
PDF
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
Toshiaki Maki
PDF
OAuth 2.0のResource Serverの作り方
Hitachi, Ltd. OSS Solution Center.
PDF
「金融API向けOAuth」にみるOAuthプロファイリングの実際 #secjaws #finsecjaws01 #oauth #oidc #api
Tatsuo Kudo
PDF
株式会社カサレアル 山本による講演「認証・認可におけるKeycloakの活用」の資料
CASAREAL, Inc.
PDF
AWS Black Belt Online Seminar 2017 AWSにおけるアプリ認証パターンのご紹介
Amazon Web Services Japan
PDF
OAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawaws
Tatsuo Kudo
PDF
API提供におけるOAuthの役割 #apijp
Tatsuo Kudo
PPTX
2013.01.18 G*Workshop GGX 2012 Report
Yu Sudo
PDF
Grails 2.0.0.M1の話
Tsuyoshi Yamamoto
PPTX
Spring Fest 2017 「エンタープライズで利用するSpring Boot」#jsug #sf_h1
Takeshi Hirosue
PDF
OpenStack Study#9 JOSUG
Hideki Saito
PDF
OAuth 2.0 MAC Authentication
Ryo Ito
PDF
Apache Axis2におけるXML署名検証不備
JPCERT Coordination Center
PPTX
NGINXでの認可について考える
Hitachi, Ltd. OSS Solution Center.
PPTX
FAPI and beyond - よりよいセキュリティのために
Nat Sakimura
Microservices /w Spring Security OAuth
Makoto Kakuta
Spring bootでweb セキュリティ(ログイン認証)編
なべ
OAuth2.0によるWeb APIの保護
Naohiro Fujie
Spring Security 4.1 の新機能
正和 井岡
Webアプリ開発実践tips共有会
tomo730
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
Toshiaki Maki
OAuth 2.0のResource Serverの作り方
Hitachi, Ltd. OSS Solution Center.
「金融API向けOAuth」にみるOAuthプロファイリングの実際 #secjaws #finsecjaws01 #oauth #oidc #api
Tatsuo Kudo
株式会社カサレアル 山本による講演「認証・認可におけるKeycloakの活用」の資料
CASAREAL, Inc.
AWS Black Belt Online Seminar 2017 AWSにおけるアプリ認証パターンのご紹介
Amazon Web Services Japan
OAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawaws
Tatsuo Kudo
API提供におけるOAuthの役割 #apijp
Tatsuo Kudo
2013.01.18 G*Workshop GGX 2012 Report
Yu Sudo
Grails 2.0.0.M1の話
Tsuyoshi Yamamoto
Spring Fest 2017 「エンタープライズで利用するSpring Boot」#jsug #sf_h1
Takeshi Hirosue
OpenStack Study#9 JOSUG
Hideki Saito
OAuth 2.0 MAC Authentication
Ryo Ito
Apache Axis2におけるXML署名検証不備
JPCERT Coordination Center
NGINXでの認可について考える
Hitachi, Ltd. OSS Solution Center.
FAPI and beyond - よりよいセキュリティのために
Nat Sakimura
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