Slide 1

Slide 1 text

やさしい認証認可 KDDIアジャイル開発センター株式会社 テックエバンジェリスト 御⽥ 稔(みのるん)

Slide 2

Slide 2 text

1 KDDI Agile Development Center Corporation $ whoami 御⽥ 稔(みのるん) @minorun365 テックエバンジェリスト KDDIアジャイル開発センター株式会社(KAG) クラウドや⽣成AIで内製開発を⾏いながら 技術の楽しさを広める活動をしています AWS Community Hero AWS Samurai 2023, 2024 2024 Japan AWS Top Engineer 2024 Japan AWS All Certs Engineer Qiita 2024 Top Contributor

Slide 3

Slide 3 text

2 KDDI Agile Development Center Corporation ⽣成AIの登場で、 Webアプリ開発にチャレンジしたり MCPサーバーを作ってみた⼈も 増えていると思います。

Slide 4

Slide 4 text

3 KDDI Agile Development Center Corporation Webアプリを作るうえで とても重要な認証・認可のしくみ、 実はよく分からないまま やり過ごしていませんか…︖

Slide 5

Slide 5 text

4 KDDI Agile Development Center Corporation もし、認証・認可がなかったら…︖ Webアプリを リリースしたぞ︕ 同僚に使ってもらおう

Slide 6

Slide 6 text

5 KDDI Agile Development Center Corporation もし、認証・認可がなかったら…︖ あれ、何か 知らん⼈が使ってる…︖

Slide 7

Slide 7 text

6 KDDI Agile Development Center Corporation もし、認証・認可がなかったら…︖ あれ、こっそり 管理者操作でイタズラ してる同僚もいる…!?

Slide 8

Slide 8 text

7 KDDI Agile Development Center Corporation もし、認証・認可がなかったら…︖ うわあああぁぁ セキュリティ事故だ〜︕ もうおしまいだ〜〜

Slide 9

Slide 9 text

8 KDDI Agile Development Center Corporation こうならないために 認証・認可のプロセスがあります

Slide 10

Slide 10 text

9 KDDI Agile Development Center Corporation 認証・認可のプロセス 前提 識別 認証 認可

Slide 11

Slide 11 text

10 KDDI Agile Development Center Corporation 認証・認可のプロセス 前提 識別 認証 認可 デジタルの世界に 「あなた」が いること

Slide 12

Slide 12 text

11 KDDI Agile Development Center Corporation 認証・認可のプロセス 前提 識別 認証 認可 デジタルの世界に 「あなた」が いること アプリを使う 「あなた」は 誰︖

Slide 13

Slide 13 text

12 KDDI Agile Development Center Corporation 認証・認可のプロセス 前提 識別 認証 認可 デジタルの世界に 「あなた」が いること アプリを使う 「あなた」は 誰︖ 「あなた」は 間違いなく 本物︖

Slide 14

Slide 14 text

13 KDDI Agile Development Center Corporation 認証・認可のプロセス 前提 識別 認証 認可 デジタルの世界に 「あなた」が いること アプリを使う 「あなた」は 誰︖ 「あなた」は 間違いなく 本物︖ あなたがアプリで やってもいい 操作は︖

Slide 15

Slide 15 text

14 KDDI Agile Development Center Corporation 各プロセスを 追ってみましょう

Slide 16

Slide 16 text

15 KDDI Agile Development Center Corporation 前提︓デジタルIDの存在 前提 識別 認証 認可 エンティティ ⼈間 コンピューター 属性 • ⽒名 • ⽣年⽉⽇ • WebサービスAのID • WebサービスBのID • パスワード • etc. • 型番 • シリアル番号 • ホスト名 • etc. デジタルID の例1 デジタルID の例2

Slide 17

Slide 17 text

16 KDDI Agile Development Center Corporation 前提︓デジタルIDの存在 前提 識別 認証 認可 エンティティ ⼈間 コンピューター 属性 • ⽒名 • ⽣年⽉⽇ • WebサービスAのID • WebサービスBのID • パスワード • etc. • 型番 • シリアル番号 • ホスト名 • etc. デジタルID の例1 デジタルID の例2 Identity (⾝元) Identifier (識別⼦)

Slide 18

Slide 18 text

17 KDDI Agile Development Center Corporation 識別 前提 識別 認証 認可 Claudeアプリ使わせて︕ 私のユーザーIDは minorun365 です Claudeアプリ ユーザー 認証 システム 確かに存在するな。 このユーザーか…

Slide 19

Slide 19 text

18 KDDI Agile Development Center Corporation 認証 前提 識別 認証 認可 パスワードは ******* です︕ Claudeアプリ ユーザー 認証 システム 照合成功︕ こいつは確かに minorun365 本⼈だな

Slide 20

Slide 20 text

19 KDDI Agile Development Center Corporation 認証︓クレデンシャルを使う 前提 識別 認証 認可 パスワードは ******* です︕ Claudeアプリ ユーザー 認証 システム 照合成功︕ こいつは確かに minorun365 本⼈だな クレデンシャル (認証情報)

Slide 21

Slide 21 text

20 KDDI Agile Development Center Corporation 認証︓クレデンシャルを使う 前提 識別 認証 認可 知識 クレデンシャルの例 所有物 ⽣体 • パスワード • 秘密の質問 • ワンタイムパスワード • 物理トークン • 指紋 • 顔

Slide 22

Slide 22 text

21 KDDI Agile Development Center Corporation 認証︓クレデンシャルを使う 前提 識別 認証 認可 知識 クレデンシャルの例 所有物 ⽣体 • パスワード • 秘密の質問 • ワンタイムパスワード • 物理トークン • 指紋 • 顔 なるべく、3カテゴリのうち 複数を組み合わせよう︕ 多要素認証(MFA)

Slide 23

Slide 23 text

22 KDDI Agile Development Center Corporation 認可 前提 識別 認証 認可 AIチャットを 使います︕ Claudeアプリ ユーザー 認証 システム あなたは 無料ユーザーだから ⼀部の新機能はNGだけど AIチャットならOK︕

Slide 24

Slide 24 text

23 KDDI Agile Development Center Corporation 認可︓アクセス制御の⽅式 前提 識別 認証 認可 RBAC (ロールベース) ABAC (属性ベース) PBAC (ポリシーベース) 社員 管理者 • 社員 • 営業部 • 男性 • 管理職 • システム部 • ⼥性 (ポリシー例) • 管理職かつ • システム部で • 平⽇⽇勤帯であれば • xxx操作を許可する

Slide 25

Slide 25 text

24 KDDI Agile Development Center Corporation 認可︓アクセス制御の⽅式 前提 識別 認証 認可 RBAC (ロールベース) ABAC (属性ベース) PBAC (ポリシーベース) 社員 管理者 • 社員 • 営業部 • 男性 • 管理職 • システム部 • ⼥性 (ポリシー例) • 管理職かつ • システム部で • 平⽇⽇勤帯であれば • xxx操作を許可する ⾃由度が ⾼い 管理が ラク

Slide 26

Slide 26 text

25 KDDI Agile Development Center Corporation 便利な認証認可プロトコル も知っておこう︕

Slide 27

Slide 27 text

26 KDDI Agile Development Center Corporation 例えば、複数サービスを⼀緒に使いたいとき… API Web会議を作成したら、 カレンダーにも登録して︕ ユーザーの代理で API経由で操作

Slide 28

Slide 28 text

27 KDDI Agile Development Center Corporation 例えば、複数サービスを⼀緒に使いたいとき… API Web会議を作成したら、 カレンダーにも登録して︕ ユーザーの代理で API経由で操作 認可がそれぞれ必要︕ GoogleパスワードをZoomに渡す 必要があり、危険だし不便

Slide 29

Slide 29 text

28 KDDI Agile Development Center Corporation 安⼼してください、「OAuth」がありますよ API Googleの認可情報を Zoomにも⾃動連携してくれる

Slide 30

Slide 30 text

29 KDDI Agile Development Center Corporation これ、便利じゃん︕ なんならZoomへのログインも Googleアカウントにまとめたい︕

Slide 31

Slide 31 text

30 KDDI Agile Development Center Corporation 認可プロトコルOAuthを、認証にも拡張した「OIDC」 API Googleの認証情報でZoomにもログインできるため、 ZoomのID・パスワード管理が不要に︕

Slide 32

Slide 32 text

31 KDDI Agile Development Center Corporation ブラウザで別サービス連携操作するやつは、どっちも「Open」と覚えよう︕ API • 認証︓OIDC(OpenID Connect) • 認可︓OAuth(Open Authorization)

Slide 33

Slide 33 text

32 KDDI Agile Development Center Corporation 社内システムでも 「別のIDでログイン」できたら便利かも︖

Slide 34

Slide 34 text

33 KDDI Agile Development Center Corporation エンプラでは、認証プロトコル「SAML」で社内SSOを実現している Entra IDや Active Directory 社内システム (勤怠管理など) 認証情報を連携してくれる ログインは1回 だけでOK︕

Slide 35

Slide 35 text

34 KDDI Agile Development Center Corporation 実はエンプラSSOも、SAMLからOIDCへ移⾏が進んでいます Entra IDや Active Directory 社内システム (勤怠管理など) OIDCで認証連携する⽅が モダンでメリットが多い OIDCにも対応︕ 既存レガシーが 移⾏のネック

Slide 36

Slide 36 text

35 KDDI Agile Development Center Corporation SNSログインやSSOは嬉しいけど、 そもそもパスワードを覚えるのが⼤変︕

Slide 37

Slide 37 text

36 KDDI Agile Development Center Corporation パスワードレス認証(FIDOシリーズ) クレデンシャルを デバイスに保存 クレデンシャルを クラウドで同期 WebAuthn パスキー (今の主流) 具体例 • Yahoo! Japan • Windows Hello • YubiKey 具体例 • Apple ID • Googleアカウント • Microsoftアカウント

Slide 38

Slide 38 text

37 KDDI Agile Development Center Corporation まとめ

Slide 39

Slide 39 text

38 KDDI Agile Development Center Corporation 認証認可を便利にするプロトコルまとめ 認証 認可 OAuth API連携 OIDC SNSログイン & エンプラSSO SAML 昔のエンプラSSO WebAuthn/パスキー パスワードレス認証 拡張

Slide 40

Slide 40 text

39 KDDI Agile Development Center Corporation 参考⽂献 • Software Design 2020年11⽉号(技術評論社) • パスキーのすべて(技術評論社)

Slide 41

Slide 41 text

Be a Change Leader. アジャイルに⼒を与え 共に成⻑し続ける社会を創る