【作業記録】paraを単体で使ってみた

paraを使ってみた件 前回はscooldとparaを組み合わせてQAサイトをローカルに構築しました 今回はpara単体で使ってみようと思います 環境とかバージョンとか諸々は次のとおりです(前回と同じ) $ cat /etc/os-release NAME="Ubuntu" VERSION="20.04.2 LTS (F…

【作業記録】scoold と para を使ってQAサイトをローカルに構築

scoold と para を使ってQAサイトをローカルに構築してみました scoold とは オープンソースのQAプラットフォーム https://scoold.com/ ナレッジベースやカスタマーサポートとして利用できる イメージとしては StackOverflow ライセンスはApache2.0 https://…

【作業記録】環境変数が子プロセスに引き継がれるか確認してみた件

環境変数が子プロセスに引き継がれるか実際に確認してみました 確認してみたことは次の2つ fork() 前に設定していた環境変数は親、子プロセスで見えるか? fork() 後に親で環境変数を追加すると子プロセスで見えるか? 作ったプログラムはこちら #include <stdio.h> </stdio.h>…

【作業記録】シグナル

シグナルについて調査してみた件 プロセスをシェルから起動し、端末から Ctrl - c でSIGINTを送る プロセスは2つにforkする プロセスは親子関係を持つが、シグナルはどうなるのか? 書いてみたプログラム #include <stdlib.h> #include <stdio.h> #include <signal.h> #include <sys/types.h> #include <sys/wait.h></sys/wait.h></sys/types.h></signal.h></stdio.h></stdlib.h>…

【作業記録】mkdir -p の模倣プログラムを作ってみた

mkdir -p の機能を模倣するプログラムをC言語で書いたので、その作業記録です。 作ったものの全量です。 #include <stdio.h> #include <stdlib.h> #include <sys/stat.h> #include <sys/types.h> int main(int argc, char *argv[]) { if (argc != 2) { fprintf(stderr, "Usage: mkdir <PATH>"); exit(EXIT_FAILU</path></sys/types.h></sys/stat.h></stdlib.h></stdio.h>…

Spring Security で OAuth2 のリソースサーバーへリクエストを送信してみる

Spring Security OAuth2 を使ってクライアントからリソースサーバーにアクセスを行ってみたいと思います。 クライアントがリソースサーバーに対して保護対象リソースを要求するにはアクセストークンを何らかの形で渡す必要があります。おそらくですが、アク…

Spring Security OAuth2 Client でKeycloakからアクセストークンを取得してみる

前回はJavaScriptを用いてSPAでアクセストークンを取得してみましたが、今回はSpring Securityを用いてサーバーによるアクセストークン取得をやってみたいと思います。 といいましても、Spring Securityが細かい実装の部分をサポートしてくれているので、や…

OAuth 2.0 のJavaScriptクライアントを作ってみる

OAuth 2.0 とか OpenID Connect の全体のフローを作ってみたいと思ったので、とりあえずOAuth 2.0で動くJavaScriptクライアントをSingle Page Applicationとして作ってみたいと思います。 OAuth 2.0 を利用する上で推奨されるセキュリティ上の対策がいくつか…

Spring Security の認証をテストしてみる

前回は認可をテストしてみたので、認可についてもテストしてみようかと思います。 認可については認証から切り離してテストすることができましたが、認証は認可と切り離さずテストする感じですね。というのも、このやり方は AuthenticationFilter ごと実行さ…

Spring Security の認可処理をテストしてみる

Spring Security のテストってどうやるのか調査してみました。 Spring Security ではテストもサポートされていて、Spring Security に関係するコードをJUnitなどで簡単にテストできるようになっています。今回は認可に関係する部分を探っていきたいなと思い…

Spring Security のリソースサーバーでJWTから Granted Authorities を作る

ちょっとタイトルが分かりづらいですが、Spring Security で作ったリソースサーバーがJWTから Granted Authorities を作る件についての話です。 Spring Security が JWT から Authentication を作る仕組み 公式リファレンスにわかりやすい図とともに載ってま…

Spring Security と Keycloak を使ってリソースサーバーを作ってみた

リソースサーバーを作ってみようかと思い立ちまして。 全体のイメージはこんな感じで考えています。 クライアントはcurlコマンドを使ってリソースオーナーパスワードクレデンシャルフローでアクセストークンを取得します。リソースオーナーパスワードクレデ…

SpringSecurityでGlobalMethodSecurityを使ってみた

SpringSecurityにはエンドポイントに対して認証認可のコントロールをすることができますが、メソッド単位でもこれらはできるようなのでやってみました。このメソッド単位で呼び出しの許可・拒否をコントロールする機能はGlobalMethodSecurityと呼ばれるよう…

JWTを作ってみる

JWSを作ってみたので、JWTも作ってみようと。 使用するライブラリは以前と同じです。 https://connect2id.com/products/nimbus-jose-jwt 作り方はこちらに載っていました。 https://connect2id.com/products/nimbus-jose-jwt/examples/jwt-with-hmac 実際に…

JWTとJWSの違いとは?

さっきJWTについての記事を書いたんですが、JWTとJWSの違いがよくわからんなと。なので少し調べてみました。 さっき書いた記事っていうのはこれ。 まず、JOSE(JSON Object Signed and Encription)という一連の仕様をまとめているものがあり、そこでJWTとJW…

JWSを作ってみる

OAuth2を使っててJWSとかでてきて、こいつは一体何者なんだって思うときあるじゃないですか。なので調べてみて使ってみたいなと。 JWSとはなにか 関連するRFCは以下の通り。 RFC7519 JSON Web Token - https://tools.ietf.org/html/rfc7519 RFC7515 JSON Web…

SpringSecurityでカスタムログインページを作ってみる

デフォルトのログインページから独自のログインページを作ってみたいなっと思うことってあるじゃないですか。なので、やってみようかなと思いまして。 公式リファレンスではこちらの箇所にカスタムのログインページの作り方が書いてあります。 https://docs.…

SpringSecurityでログイン中のユーザー情報を更新してみる!

Spring Securityを使っていてログイン中のユーザー情報を変更する機能ってあるじゃないですか。そうするときにどうするのか気になりまして。 SecurityContextを更新すれば良さそう 結論としてはSecurityContextのAuthenticationを更新すれば良さそうです。以…

SpringFrameworkでOAuth2.0をサポートするにはどのプロジェクトを使うべきか?

SpringFrameworkでOAuth2.0をサポートするにはどんな依存関係が一番いいのか気になりまして、ざっと調べてみました。 結論 Client ... Spring Security 5.2+ Resource Server ... Spring Security 5.2+ Authorization Server ... Springでは新しく作らないほ…

SpringSecurityでCORSの設定を行ってみる

CORS CORS (Cross Origin Resource Sharing) はHTTPヘッダーを使用して異なるオリジン間でリソースを共有する仕組み。サーバーがクライアントのリクエストに対して以下のヘッダーを用いて応答し、どのオリジンに対して許可しているかを示す。 Access-Control…

thymeleaf extras spring security を使ってみた

ThymeleafにSpringSecurity用のライブラリがあるということで使ってみました。 https://github.com/thymeleaf/thymeleaf-extras-springsecurity このモジュールを追加するとThymeleafを使ってHTMLをレンダリングする際にSpringSecurityの Authentication に…

Spring Security でCSRFトークンを使ってみる

Spring Security を使ってCSRFトークンを使ってみたという話です。 CSRFとは Cross Site Request Forgery (CSRF) とは、ログインした状態のユーザが悪意のあるリンク等をクリックすることで、意図しない操作をアプリケーションに送信する攻撃のことです。受…

Spring Security を理解する

Spring Security を一度しっかり理解しておこうかと思って。 やってみたこと Springは色々と便利な機能がある反面、その設定だとか動き方だとかが良くも悪くもブラックボックス化されています。数あるSpring関連のプロジェクトの中でも特に複雑&理解が難し…

PythonのテンプレートエンジンJinja2を使ってみた

Jinja2はPythonのDjangoウェブフレームワークに強く影響を受けて開発された、テンプレートエンジンらしいです。テキストベースのファイルであればなんでも出力することができるのでHTMLに加え、CSVやXMLもレンダリングすることができますね。やろうと思えば…

Pythonのfilterとsort

Pythonでちょっとしたツールを作る事が増えたのですが、やはりコレクション操作は重要だなと実感しました。コレクションから特定の値を抜き出したりとか、特定の値になるまでループしたりとか、やはり何するにもこの辺りはつきまとってくるんですね。 filter…

Pythonでforkとexecvを試す

「Linux のしくみ」と言う本を読んでいて、Pythonで試してみようかなと思い。 https://gihyo.jp/book/2018/978-4-7741-9607-7 fork とか大学の授業でやったな、と懐かしい感じがします。大学生の時にC言語で作ってfork処理が無限ループするとかやらかしてま…

NFSv4でFirewall越しに接続する

この前NFSでUbuntuとMacをつなげたんですけど、Firwall越しに接続できていなかったので改善したいと思います。 やることはかんたん。クライアント側で接続するときにバージョンを4指定で接続するだけです。 NFSv4はポートが固定されるのでfirewalldでの設定…

UbuntuにNFSを設定してみる

UbuntuにNFSを設定してみようかなと。 参考にしたサイトはこちら。 Ubuntu Community Help Wiki - SettingUpNFSHowTo Ubuntu Server - Network File System (NFS) Red Hat Customer Portal - 18.2.3 マウントポイントを共有する Ubuntu Linux 18.04 LTSで、N…

LinuxのFirewallの設定をやってみた

自宅にあるLinuxのFirewallの設定をいじってなかったんでいじくろうかと。 環境 bookstore@bookstoreUbuntu:~$ cat /etc/os-release NAME="Ubuntu" VERSION="20.04.1 LTS (Focal Fossa)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 20.04.1 LTS" VERSION…

Vimのjumpについて調べてみた

vim

vimのhelp読んでてjumpとかあまり使ってないし理解できていないなと。 jumps jumpのヘルプは :help jump-motions で確認できる。 jumpってそもそもなんなのかと言うとコマンドを使用してカーソルを別の行に移動させることを指すみたい。vimにはいくつもjump …