From 6a01453f081cfc6286531a6b6fe8e7123ca4456e Mon Sep 17 00:00:00 2001 From: ma91n Date: Fri, 5 Dec 2025 09:31:46 +0900 Subject: [PATCH] =?UTF-8?q?Software=20Design=202025=E5=B9=B412=E6=9C=88?= =?UTF-8?q?=E5=8F=B7=20=E3=80=8C=E4=BB=8A=E3=81=95=E3=82=89=E8=81=9E?= =?UTF-8?q?=E3=81=91=E3=81=AA=E3=81=84ID=E7=AE=A1=E7=90=86=20=E8=AA=8D?= =?UTF-8?q?=E8=A8=BC=E5=9F=BA=E7=9B=A4=E3=82=92=E6=A7=8B=E7=AF=89=E3=81=99?= =?UTF-8?q?=E3=82=8B=E9=9A=9B=E3=81=AB=E7=9F=A5=E3=81=A3=E3=81=A6=E3=81=8A?= =?UTF-8?q?=E3=81=8F=E3=81=B9=E3=81=8D=E3=81=93=E3=81=A8=E3=80=8D=E3=81=AB?= =?UTF-8?q?=E5=AF=84=E7=A8=BF=E3=81=97=E3=81=BE=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .textlintrc | 2 +- ...27\343\201\276\343\201\227\343\201\237.md" | 61 ++++++++++++++++++ source/images/2025/20251205a/image.png | Bin 0 -> 245865 bytes source/images/2025/20251205a/thumbnail.png | Bin 0 -> 153416 bytes 4 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 "source/_posts/2025/20251205a_Software_Design_2025\345\271\26412\346\234\210\345\217\267_\343\200\214\344\273\212\343\201\225\343\202\211\350\201\236\343\201\221\343\201\252\343\201\204ID\347\256\241\347\220\206_\350\252\215\350\250\274\345\237\272\347\233\244\343\202\222\346\247\213\347\257\211\343\201\231\343\202\213\351\232\233\343\201\253\347\237\245\343\201\243\343\201\246\343\201\212\343\201\217\343\201\271\343\201\215\343\201\223\343\201\250\343\200\215\343\201\253\345\257\204\347\250\277\343\201\227\343\201\276\343\201\227\343\201\237.md" create mode 100644 source/images/2025/20251205a/image.png create mode 100644 source/images/2025/20251205a/thumbnail.png diff --git a/.textlintrc b/.textlintrc index 536f7851697..ee645fb8672 100644 --- a/.textlintrc +++ b/.textlintrc @@ -65,7 +65,7 @@ "sentence-length": { "max": 200 }, - "no-exclamation-question-mark": true, + "no-exclamation-question-mark": false, "ja-no-weak-phrase": false, "ja-no-continuous-kanji": { "max": 10 diff --git "a/source/_posts/2025/20251205a_Software_Design_2025\345\271\26412\346\234\210\345\217\267_\343\200\214\344\273\212\343\201\225\343\202\211\350\201\236\343\201\221\343\201\252\343\201\204ID\347\256\241\347\220\206_\350\252\215\350\250\274\345\237\272\347\233\244\343\202\222\346\247\213\347\257\211\343\201\231\343\202\213\351\232\233\343\201\253\347\237\245\343\201\243\343\201\246\343\201\212\343\201\217\343\201\271\343\201\215\343\201\223\343\201\250\343\200\215\343\201\253\345\257\204\347\250\277\343\201\227\343\201\276\343\201\227\343\201\237.md" "b/source/_posts/2025/20251205a_Software_Design_2025\345\271\26412\346\234\210\345\217\267_\343\200\214\344\273\212\343\201\225\343\202\211\350\201\236\343\201\221\343\201\252\343\201\204ID\347\256\241\347\220\206_\350\252\215\350\250\274\345\237\272\347\233\244\343\202\222\346\247\213\347\257\211\343\201\231\343\202\213\351\232\233\343\201\253\347\237\245\343\201\243\343\201\246\343\201\212\343\201\217\343\201\271\343\201\215\343\201\223\343\201\250\343\200\215\343\201\253\345\257\204\347\250\277\343\201\227\343\201\276\343\201\227\343\201\237.md" new file mode 100644 index 00000000000..a892ce7e2ea --- /dev/null +++ "b/source/_posts/2025/20251205a_Software_Design_2025\345\271\26412\346\234\210\345\217\267_\343\200\214\344\273\212\343\201\225\343\202\211\350\201\236\343\201\221\343\201\252\343\201\204ID\347\256\241\347\220\206_\350\252\215\350\250\274\345\237\272\347\233\244\343\202\222\346\247\213\347\257\211\343\201\231\343\202\213\351\232\233\343\201\253\347\237\245\343\201\243\343\201\246\343\201\212\343\201\217\343\201\271\343\201\215\343\201\223\343\201\250\343\200\215\343\201\253\345\257\204\347\250\277\343\201\227\343\201\276\343\201\227\343\201\237.md" @@ -0,0 +1,61 @@ +--- +title: "Software Design 2025年12月号 「今さら聞けないID管理 認証基盤を構築する際に知っておくべきこと」に寄稿しました" +date: 2025/12/05 00:00:00 +postid: a +tag: + - 出版 + - SoftwareDesign + - Auth0 +category: + - 認証認可 +thumbnail: /images/2025/20251205a/thumbnail.png +author: 藤井亮佑 +lede: "Software Design 2025 年 12 月号特集の「今さら聞けない ID 管理 認証基盤を構築する際に知っておくべきこと」に、宮崎さん、市川さん、私の 3 名で寄稿をさせていただきました。" +--- + + + + +# はじめに + +こんにちは。TIG-DX の藤井です。 + +[Software Design 2025 年 12 月号](https://gihyo.jp/magazine/SD/archive/2025/202512) 第 1 特集の「今さら聞けない ID 管理 認証基盤を構築する際に知っておくべきこと」に、[宮崎さん](/authors/宮崎将太/)、[市川さん](/authors/市川浩暉/)、[私](/authors/藤井亮佑/)の 3 名で寄稿をさせていただきました。 + +第3章「IDaaS とはどんなサービスか Auth0 から学ぶ機能と選定の勘所」を担当し、Auth0 の機能や活用事例、IDaaS を選定する際の基準等、実際に IDaaS を活用する際に有用な知見を詰め込みました。 + +本記事にて、簡単に宣伝させていただければと思います。 + +# Software Design とは + +技術評論社より月刊で刊行されているOS・Web・プログラミング、技術者のスキルアップのための技術情報雑誌です。当社からも様々な分野についての特集で[何度か寄稿](/tags/SoftwareDesign/)をしています。 + +# 今回の特集について + +## そもそも ID 管理とは + +世の中には数多くの Web サービスが存在し、その多くがアカウントを作成、ログインすることで利用できるようになっています。企業や学校などに所属している場合も、固有のアカウントが発行され、何らかのサービスを利用することがあると思います。こういったアカウントは、適切にユーザを識別し、ユーザに応じて適切に権限管理するために用いられています。このような仕組みのことを、一般に「ID 管理」と呼び、世にあるサービスの裏側では当たり前のように ID 管理が行われています。 + +当然のように存在し運用されているのが ID 管理という仕組みです。しかし、その仕組みの裏側は、そう単純ではありません。先述したユーザの識別と適切な権限管理、すなわち認証認可が正常に行えなければ、健全なサービス提供は不可能です。 + +さらに、ID 管理が行われているサービスを利用する場合、メールアドレスなどのユーザを識別する情報に加え、パスワードをシステムに登録することが多いはずです。これらの情報を紛失・流出させてしまう等があると、信用の失墜・訴訟など、大きな問題に発展してしまうため、適切かつ厳密に管理する必要があります(実際に個人情報が流出してしまったり、悪意ある攻撃者により窃取されてしまった...といった事例は枚挙に暇がありません)。 + +一方で、ID 管理はサービス提供へ密接に関わる仕組みです。そのため、ユーザにとって煩雑すぎたり、パフォーマンスが不十分だったり、システムの他領域との連携が困難だったりすると、サービスの品質低下にもつながります。 + +## ID 管理を学ぶきっかけとしての本特集 + +しかしながら、「なんとなくは理解しているが、具体的にどのような仕組みなのか?」「実際構築になるとどうすれば良いのか?」 「フルスクラッチ? SaaS? SaaS なら何を使えば良い?」など、より実践的な内容は実は知らない、という方は案外多いかと思います。 + +ID 管理を伴うサービスを構築・運用している場合であっても、ID 管理に関しては専門家のようなメンバーが存在し、その人依存になってしまっている、というようなこともあるのではないでしょうか。 + +今回の特集は、まさにそういった方に向けた内容となっています。当然ながら、この特集を一読すれば ID 管理についてすべて理解できる、構築・運用ができるようになる、といったわけではありません。より詳細な技術要素を調べ・学ぶ必要はありますし、継続的に知識をアップデートしていく必要もあります。ただし、その取っ掛かりになる、「詳しい人に聞きたいけど、今更こんなに基本的なことは聞けないなぁ…」といった知識は十二分に得られる内容となっています。 + +特に、当社が寄稿した第 3 章では、昨今広く利用されている ID 管理のための SaaS、IDaaS である Auth0 について取り上げています。 + +どういった機能が存在し、どのようなサービスが実現できるのか。少し汎化して、IDaaS を比較する際の観点は何か。といった、IDaaS を活用していくための、実践的な内容を記載しています。ID 管理するにあたって、Auth0 をはじめとする IDaaS を選択肢の1つとして取り入れることができる内容となっているかと思いますので、ぜひご一読いただければと思います。 + +# おわりに + +先述の通り、ID 管理は昨今のサービス提供には欠かせないものである一方、意外と詳しい人は少ない、というのが実情だと認識しています。今回の特集を機に、より多くの方が ID 管理の世界に手を伸ばしていただき、より安心・安全・便利なサービスが増えることを願っています。 + +また、普段から ID 管理には携わっており、Auth0 も活用していますが、今回の寄稿をきっかけに改めて知識を整理・更新できました。雑誌に寄稿するという経験を得られたことも大変ありがたく思っております。このような機会をくださった技術評論社様に、この場を借りてお礼申し上げます。 diff --git a/source/images/2025/20251205a/image.png b/source/images/2025/20251205a/image.png new file mode 100644 index 0000000000000000000000000000000000000000..22cf2d275052215e3668a1e784a6686f3551886c GIT binary patch literal 245865 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