サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
体力トレーニング
qiita.com/opengl-8080
Spring Security は 5.4 以降、設定の書き方に大幅な変更が入っています。 詳しくは @suke_masa さんの Spring Security 5.7でセキュリティ設定の書き方が大幅に変わる件 - Qiita を参照してください。 基礎・仕組み的な話 認証・認可の話 Remember-Me の話 CSRF の話 セッション管理の話 レスポンスヘッダーの話 メソッドセキュリティの話 CORS の話 Run-As の話 テストの話 MVC, Boot との連携の話 番外編 Spring Security にできること・できないこと ドメインオブジェクトセキュリティとは hasAuthority() などを使った認可処理は、基本的に機能くらいの単位の制御になる。 (ある機能(画面)は ○○ という権限を持っている必要がある、とか) しかし、実際にシステムを作っているとデータ単
Spring Security は 5.4 以降、設定の書き方に大幅な変更が入っています。 詳しくは @suke_masa さんの Spring Security 5.7でセキュリティ設定の書き方が大幅に変わる件 - Qiita を参照してください。 基礎・仕組み的な話 認証・認可の話 Remember-Me の話 CSRF の話 セッション管理の話 メソッドセキュリティの話 CORS の話 Run-As の話 ACL の話 テストの話 MVC, Boot との連携の話 番外編 Spring Security にできること・できないこと デフォルトで設定されるヘッダー Spring Security を使用していると、デフォルトで下記ヘッダーがレスポンスに追加される。 Cache-Control: no-cache, no-store, max-age=0, must-revalidate
自己紹介 opengl-8080 主に Qiita で技術メモを書いたり 関西の SIer 勤務 今日お話しすること Spring Security が保護してくれること、してくれないこと Spring Security を導入すれば、この攻撃は守ってくれる この攻撃は Spring Security の守備範囲外なので別途対処が必要 仕様や機能の話をメインにして、実装の細かい話は無し デモ用アプリ 起動方法 GitHub からプロジェクトをダウンロードし、プロジェクトのルートで gradlew start を実行 ※初回は Payara (60MB)などのダウンロードが行われるので注意 動作確認 AP サーバーが起動したら、以下の URL にアクセスする。 https://localhost:8443/secure Spring Security を使用したアプリケーション https:
Spring Security は 5.4 以降、設定の書き方に大幅な変更が入っています。 詳しくは @suke_masa さんの Spring Security 5.7でセキュリティ設定の書き方が大幅に変わる件 - Qiita を参照してください。 基礎・仕組み的な話 認証・認可の話 Remember-Me の話 CSRF の話 セッション管理の話 レスポンスヘッダーの話 メソッドセキュリティの話 Run-As の話 ACL の話 テストの話 MVC, Boot との連携の話 番外編 Spring Security にできること・できないこと CORS とは @tomoyukilabs さんの CORSまとめ - Qiita が勉強になりました。 雑にまとめると、 ブラウザは、あるオリジンから読み込まれたリソースから別のオリジンにアクセスできないようになっている 同一オリジンポリシーとい
Spring Security は 5.4 以降、設定の書き方に大幅な変更が入っています。 詳しくは @suke_masa さんの Spring Security 5.7でセキュリティ設定の書き方が大幅に変わる件 - Qiita を参照してください。 基礎・仕組み的な話 認証・認可の話 Remember-Me の話 CSRF の話 レスポンスヘッダーの話 メソッドセキュリティの話 CORS の話 Run-As の話 ACL の話 テストの話 MVC, Boot との連携の話 番外編 Spring Security にできること・できないこと 同時セッション数の制御 デフォルトだと、同じユーザーで複数のセッションをつくることができる。 つまり、同じユーザーで異なる端末からいくつでもログインすることができることになっている。 設定を変更すると、同時セッション数を制限したり、もしくは複数ログイン
Spring Security は 5.4 以降、設定の書き方に大幅な変更が入っています。 詳しくは @suke_masa さんの Spring Security 5.7でセキュリティ設定の書き方が大幅に変わる件 - Qiita を参照してください。 基礎・仕組み的な話 認証・認可の話 Remember-Me の話 セッション管理の話 レスポンスヘッダーの話 メソッドセキュリティの話 CORS の話 Run-As の話 ACL の話 テストの話 MVC, Boot との連携の話 番外編 Spring Security にできること・できないこと CSRF とは Cross-site Request Forgery の略。 Forgery は「偽造」という意味らしい。 この攻撃が何なのかとか、対策方法については IPA のサイト とか Wikipedia とかを参照のこと。 Spring S
Spring Security は 5.4 以降、設定の書き方に大幅な変更が入っています。 詳しくは @suke_masa さんの Spring Security 5.7でセキュリティ設定の書き方が大幅に変わる件 - Qiita を参照してください。 基礎・仕組み的な話 認証・認可の話 CSRF の話 セッション管理の話 レスポンスヘッダーの話 メソッドセキュリティの話 CORS の話 Run-As の話 ACL の話 テストの話 MVC, Boot との連携の話 番外編 Spring Security にできること・できないこと Remember-Me 認証とは? よく Web サービスのログイン画面についてる「ログインしたままにする」とか「○週間ログイン状態のままにする」とか書いてるアレ。 Hello World 実装 namespace <?xml version="1.0" enc
Spring Security は 5.4 以降、設定の書き方に大幅な変更が入っています。 詳しくは @suke_masa さんの Spring Security 5.7でセキュリティ設定の書き方が大幅に変わる件 - Qiita を参照してください。 基礎・仕組み的な話 Remember-Me の話 CSRF の話 セッション管理の話 レスポンスヘッダーの話 メソッドセキュリティの話 CORS の話 Run-As の話 ACL の話 テストの話 MVC, Boot との連携の話 番外編 Spring Security にできること・できないこと 認証 UserDetailsService:ユーザー情報を検索する ユーザーの情報を検索する役割は、 UserDetailsService が担っている。 Spring Security には UserDetailsService を実装したクラス
apply plugin: 'war' sourceCompatibility = '1.8' targetCompatibility = '1.8' compileJava.options.encoding = 'UTF-8' repositories { mavenCentral() } dependencies { providedCompile 'javax.servlet:javax.servlet-api:3.1.0' compile 'javax.servlet:jstl:1.2' compile 'org.springframework.security:spring-security-web:4.2.1.RELEASE' compile 'org.springframework.security:spring-security-config:4.2.1.RELEASE'
自己紹介 opengl-8080 主に Qiita で技術メモを書いたり 関西の SIer 勤務 今日お話しすること 簡単な Hello World を通じて、 Spring Security の仕組みの基礎的な部分を説明 どのようなクラスが、どのように連携しあっているのか 設定ファイルがどのように関係しているのか 背景 個人的に Spring Security の勉強を開始 ちょっと Hello World を書こうとしたが手こずる この設定はなんで必要? ・・・と書くとなぜ~~~が有効に? この設定って最小限の Hello World で必要? 抽象化された設定 Spring Security の設定は高度に抽象化されている 設定が簡潔になる一方で、裏で何が行われているかが分かりづらい 仕組みの理解や、カスタマイズがしづらくなる ※個人の所感です 対象者 Hello World を通じ
元ネタ プレミアムフライデーを求めるメソッドを作った - Qiita プレミアムフライデーを求めるメソッドを作った(Java8版) - Qiita プレミアムフライデーを求めるメソッドをワンライナーで作った - Qiita Java 8 なら TemporalAdjuster 作った方が Date and Time API 使ってる感出ると思って作ろうとしたら既にあった。 package premium.friday; import java.time.DayOfWeek; import java.time.LocalDate; import java.time.YearMonth; import java.time.format.DateTimeFormatter; import java.time.temporal.TemporalAdjusters; public class Mai
Git のコミットグラフを簡単に作成できる Gitgraph.js を使っていて、「もっと楽に色とか調整できたらいいのになぁ」と思ったので作ってみた。 こちら を開けばすぐに使えます。 データはローカルストレージに保存されます(キー:gitgraph.storage)。 一応 Chrome, Firefox, Edge では動いているみたいです(IE は動かないです)。 ソースや細かい使い方はこちら(日本語は後半)
Git のコミットグラフを簡単に作成できる Gitgraph.js を使っていて、「git のコマンドを入力している感じで実装したいなぁ」と思ったので作ってみた。 こんなのを描こうと思った場合、 Gitgraph.js をそのまま使うと var gitGraph = new GitGraph({orientation: 'vertical-reverse'}); // master ブランチ作成 var master = gitGraph.branch({ name: 'master', color: 'red', commitDefaultOptions: { color: 'red' } }); master.commit().tag('v0.0.0'); // develop ブランチ作成 var develop = gitGraph.branch({ name: 'develop'
この記事は、システムエンジニア Advent Calendar 2016 - Qiita の23日目の記事です。 昨日は @yy_yank さんの 気負わず普通にテストしよう でした。 明日は @koduki さんです。 はじめに 複数ユーザが触るアプリケーションを作る場合、同時にデータが更新された場合の制御は避けては通れません。 この制御はスレッドセーフとか同時更新とか色々な観点で考えないといけないのですが、いまいちそのあたり自分自身の中できれいに整理できていませんでした。 なので、この機会に同時に更新される場合の排他制御について、自分なりに整理してみました。 まえおき 説明に使用する言語は Java です。 説明のためにシーケンス図っぽいものを使っていますが、 UML の厳密な定義には従っていません。図が描きやすいからシーケンス図を利用している、ってだけなので厳密な記法ルールに従ってい
この記事は Java EE Advent Calendar 2016 - Qiita の3日目の記事です。 昨日は @n_agetsu さんの コネクションプールの挙動差分によるバグ顕在化 でした。 明日は @lbtc_xxx さんです。 以前 JPA のマッピングについて勉強したときのメモ を書いたことがあるのですが、これはマッピングの仕組みや意味を理解することが主目的でした。 そのため、後でマッピングの方法を探そうとしたときに、ノイズ(不要な情報)が多いなぁと思っていました。 そこで、今回は「あのマッピングどうするんだっけ」と思ったときに Java の実装と DB の構造がパッと分かるようにすることを目標にして、いろいろなマッピングを一覧にしてみました。 また、うまく動くものだけでなく、うまく動かないもの、実現できないものもまとめています。 できることだけでなく、できないことも早々に分
このスライドについて このスライドは、 JJUG CCC 2016 Fall でお話ししたときに使用したスライドです。 自己紹介 opengl-8080 主に Qiita で技術メモを書いたり 関西の SIer 勤務 今日話すこと JPA と DDD の関係について思っていること JPA で DDD のパターンを実装するとどうなるか JPAとDDDの関係で思っていること 最初は、 JPA に対してあまり良いイメージはなかった DDD を学ぶにつれて、徐々にイメージが変わっていった なぜ変わっていったのか、どう変わっていったのか JPAでDDDのパターンを実装 エンティティ・値オブジェクトなどを JPA で実装する 仕様上の限界、実装ごとの現実 JPAとDDDの関係で思っていること JPA へのイメージの変化 DB アクセスライブラリ1との出会い DB アクセスってこうやるのかぁ JPA と
4/2(土) Kotlin 1.0リリース記念勉強会 in 京都 - connpass に参加してきて、個人的に仕組みがかなり気になった Extensions について色々試してみた。 Extensions とは fun main(args : Array<String>) { "extensions".hoge() } fun String.hoge() { println("<$this>") }
MAIN START OUT MSG,LEN ; メッセージを出力 RET ; 終了 MSG DC 'Hello World!' ; 出力メッセージ LEN DC 13 ; メッセージの長さ END MAIN START LD GR5,BEGINIDX CALL LOOP LOOP CPA GR5,ENDIDX ; 100 と比較 JPL FINISH ; GR5 > 100 なら終了 LD GR1,GR5 LD GR2,FIFTEEN CALL DIVIDE ; 15 で割る CPA GR4,ZERO ; あまりを 0 と比較 JZE PUTFZBZ ; 15 で割り切れたら fizzbuzz 出力 LD GR1,GR5 LD GR2,FIVE CALL DIVIDE ; 5 で割る CPA GR4,ZERO JZE PUTBUZZ ; 割り切れたら buzz 出力 LD GR1,GR5
Kotlin には標準ライブラリが用意されており、その中にコレクションも存在する。 特徴 Kotlin のコレクションは、「読み取り専用」と「書き込み可」のインターフェースが明確に分かれている。 listOf(), mapOf() など、関数でインスタンスを生成する。 Stream API に用意されているような filter() などのメソッドが、 Iterable などに定義されている。 コレクションの種類 List Map Set インターフェースの関係 kotlin.collections パッケージの下にある各インターフェースがどのような関係になっているのか、クラス図で表現した。 基本は JDK のコレクションと同じ構成だが、 MutableIterable など書き込み可能かどうかを区別するためにインターフェースが追加されている。 List などの Mutable が付いていな
FindBugs とは Java のソースコードを静的に解析して、バグとなりそうなコードを見つけるツール。 ビルドプロセスの中に組み込んで自動化させることで、ソースコードレビューの手間を減らしたり、そもそも人目では見つけづらいバグコードを事前に検出したりできるようになる。 環境 OS Windows 10
自己紹介 opengl-8080 主に Qiita で技術メモを書いたり 趣味で Kotlin, Java 8, Java EE をさわり 仕事で Excel VBA, Java 6, Struts1 を使う関西の SE 関西(たまに東京)の勉強会に出没 Kotlin といえば? 便利な機能の話はよく聞くが... Nullable Non-Null Type 関数リテラル 拡張関数 演算子オーバーロード スマートキャスト クラス委譲 プロパティ委譲 データクラス etc... コレクションの話を あまり聞かない気がする 自分の調べ方が甘いだけかも... いざコレクションを 使おうとすると... Java の ArrayList を使えばいいの? Kotlin のコレクションがあるらしい どういうクラスがあるの? クラス間の関係は? Java のコレクションとの変換は? どうやってインスタン
基本 グリッドのオプション メソッド ※全てのオプションは網羅していません。 全てのオプションを確認したい場合は、 公式ドキュメント を参照。 カラムオプション 基本 var grid = document.getElementById('grid'); new Handsontable(grid, { columns: [ { type: 'text' } ] });
2.2.1 Hello World インストール 公式サイト からダウンロードする。 zip(tar) と war が配布されている。 zip の方は、 Apache Archiva を単独(スタンドアロン)で動かしたい場合に使用する。 Jetty が内蔵されており、それが利用される。 すでに Tomcat などの Servlet コンテナがインストールされており、そこにデプロイする形で利用したい場合は war を使用する。 今回は zip のほうを選択した。 zip を任意の場所に解凍したら、インストールは完了。 起動する 解凍してできたフォルダの下の bin フォルダの下でコマンドラインを開き、以下のコマンドを実行する。 サーバーが起動するので、ブラウザを開いて http://localhost:8080/ にアクセスする。 停止は Ctrl + C。 管理者ユーザーを作成する 右上の
Checkstyle とは Java のソースコードがコーディング規約に即しているかどうか判定するための静的解析ツール。 インデントサイズや変数名のつけ方(キャメルケースかどうかとか)、空白スペースの入れ方など、コーディングスタイルに関するチェックを行うことができる。 ビルドプロセス内に組み込むことで、自動でコーディングスタイルをチェックできるようになり、規約違反があればビルドを失敗させることができるようになる。 機械的にチェックできる問題はツールに任せることで、「実装が仕様を満たしているか?」「致命的なバグはないか?」「もっと効率的な実装方法はないか?」など、より重要な観点に集中してソースコードレビューをすることができるようになる。 Hello World インストール sourceforge から、最新の zip を落としてくる。 zip を解凍したら、中に jar ファイルが入ってい
グリッドのオプション セル・カラムのオプション メソッド Handsontable とは JavaScript のライブラリ。 ブラウザ上で Excel のようなグリッドを実現できる。 jQuery などの他のライブラリには依存していない。 Hello World インストール Releases · handsontable/handsontable Github から zip を落とすなりする(Bower とかで落とせるっぽい)。 解凍したら、 dist フォルダの下に minify 化されたソースとかが入っている。 実装
jline とは Java で高機能な CUI コンソールを作るためのライブラリ。 標準 API の入出力だけでは実現できない機能を実現できる。 100% Java ではなく、実行環境に依存したライブラリが jar に同梱されている(Windows なら dll が使用される)。 Java 9 から導入される jshell も jline を使用している(jdk.internal.jshell.tool.ConsoleIOContext とか)。 環境 OS Windows 7
縁あって Eclipse Collections にコントリビュートすることができた。 Git は個人的な趣味プログラミングでしか使っておらず、 Pull Request を考慮した Git 操作というものについては全く知識も経験もなかった。 今回 Eclipse Collections に Pull Request を出すにあたって、様々な初めての Git 操作を経験することができ大変勉強になったので、忘れないようにメモする。 Eclipse Collections にコントリビュートするときのルール 適当に Pull Request を送れば良いわけではなく、いくつかルールがある。 具体的な話は eclipse-collections/CONTRIBUTING.md at master · eclipse/eclipse-collections に書いてある(英語)。 ざっと、以下のよ
Kotlin のコードを書いててよくわからなかったところや、ハマったところとかのメモ。 今後適宜追記していくかも。 基本的な文法とかは、 @k5n さんが以下の翻訳記事を書かれているのでそちらを参照ください。 30分で覚えるKotlin文法 - Qiita Kotlin文法 - 基本 - Qiita Kotlin とは JetBrains というチェコの会社が開発したプログラミング言語。 JetBrains は、 IntelliJ IDEA を開発している会社でもある。 JVM 上で動作する。 静的型付け言語。 オープンソース(Apache License 2)。 環境 OS Windows 7 1.8.0_74 Hello World JDK のインストールは割愛。 コンパイラをインストールする GitHub の Release からコンパイラを落とせる。 kotlin-compiler
var grid = document.getElementById('grid'); new Handsontable(grid, { data: [ ['あいうえお', 'かきくけこさしすせそ'], ['やゆよ', 'たちつてと'] ], autoColumnSize: true }); 内容が1行に表示できるように幅が自動調整される。 デフォルトは false で、以下のようになる。 colHeaders:ヘッダーを表示する boolean で指定 var grid = document.getElementById('grid'); new Handsontable(grid, { data: [ ['あいうえお', 'かきくけこ'], ['さしすせそ', 'たちつてと'] ], colHeaders: true });
次のページ
このページを最初にブックマークしてみませんか?
『@opengl-8080のマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く