25 ポイント 投稿者 GN⁺ 2024-05-28 | 8件のコメント | WhatsAppで共有
  • "auth" という用語は、認証(authentication)と認可(authorization)の2つの意味を持つ
  • そのため、ライブラリ名やパッケージ名で混乱が生じる
  • "authn" と "authz" という用語は明確ではなく、理解しにくい

認証と認可の違い

  • 認証(authentication): ユーザーが誰であるかを確認するプロセス
  • 認可(authorization): ユーザーが何をできるかを決定するプロセス
  • 2つの概念は互いに異なり、片方を解決してももう片方の問題が解決するわけではない

"permissions" と "login" の使用提案

  • 認証は "login"、認可は "permissions" として明確に区別することを提案
  • "login" は名詞形と動詞形の両方で使える
    • 名詞: システムにアクセスするために入力する情報
    • 動詞: システムを使うためにログインする行為
  • "permissions" は名詞形で使い、動詞形としては "check permissions" を使う

明確な用語を使う利点

  • ソフトウェアエンジニア以外の分野の人にも理解しやすい
  • より良い抽象化が可能になる
  • 認証と認可を別々のモジュールとして分離して設計できる

GN⁺ の意見

  • 明確な用語を使う重要性: 用語が明確であればコミュニケーションが円滑になり、誤解を減らせる。
  • 抽象化の利点: 認証と認可を分離すると、システム設計がより柔軟になり、保守もしやすくなる。
  • 他の用語の使用例: "login" や "permissions" のほかに、"access control" のような用語も検討に値する。
  • 技術導入時の考慮事項: 新しい用語を導入する際は、チーム内で十分な議論と合意が必要。
  • 関連プロジェクトの紹介: 認証と認可を分離した代表的なプロジェクトとして、OAuth と OpenID Connect がある。

8件のコメント

 
savvykang 2024-05-29

開発者同士では auth の代わりに authn, authz を使い、ユーザーとの接点があるドキュメントやコントローラー/ファサードでは login, permission を使う、というのは同意できます。ただ、authn, authz までなくそうというのは、そこまでする必要があるのかなと思います。

 
gcback 2024-05-29

本文で指摘されているように、auth は認証と権限の両方を曖昧に指す形で使われていて、たしかに混乱しがちでしたね。純粋な開発者以外の分野とのコミュニケーションのためにも、より一般的な用語で分けるのは望ましい試みだと思います。

 
nemorize 2024-05-28

Authentication と Authorization の両方を Auth と略せてしまうのが問題なら、
本文で言及されていたように Authn、Authz で十分な気もしますが……
これでは明確ではないと考えたなら、Authenty、Authory くらいまで少し長くしてもよいでしょう。

 
koxel 2024-05-28

権限システムにもパーミッション方式があって、ACL方式もあって、ではそれをどう区別しようというのか……?
なんだかこじつけっぽいですね……

 
namarie32ilu 2024-05-28

おそらく非開発チームのメンバーとのコミュニケーションコストを下げようという試みなのだと思いますが、少しやりすぎですね。

 
iolothebard 2024-05-28

わざわざ両方を合わせて auth と呼んでいるのではないですか?

 
kuber 2024-05-28

Authentication と authorization があるのに、なぜわざわざ…

 
GN⁺ 2024-05-28
Hacker Newsの意見
  • "Authorize" と "Authenticate" は中世以来使われてきた優れた言葉である。この2語の意味は大きく変わっていない。
  • この2語は暗号システムにおいて重要な違いを持つ。混乱を減らすために言葉を変えても、あまり役には立たないだろう。
  • "auth" という名前のせいで混乱が生じるという主張には説得力が乏しい。言葉を変えても問題は解決しないように思える。
  • "authn" と "authz" という略語を使うのがよい。ただし、長い単語をそのまま使っても構わない。
  • "Identity" and "Access" Management (IAM) は標準用語である。個人的には "authnz" という用語のほうが好みだ。
  • "Login" にはトークンや鍵ベースの認証は含まれない。サービスアカウントはログインしないが、認証と認可は必要である。
  • Authn と Authz の区別はそれほど明確ではない。明確な用語よりも、時には格好いい用語のほうが好まれているように見える。
  • IAM システムで "auth" という用語を使うことに問題はなかった。より具体的な表現が必要なときは、適切な語句を使えばよい。
  • "login" と "permissions" ではシステム全体の意味や複雑さを捉えきれない。認証はログインよりも広い意味を持つ。
  • 認証と認可は密接に関連している。認証なしに認可は成り立たない。
  • ログインは認証の言い換えとしては適切ではない。認証にはログインを必要としない場合もある。
  • "auth" は認証と認可の両方を意味しうる。この2つの概念はしばしば一緒に使われるためである。
  • 認証と認可は IT と情報セキュリティにおける標準用語である。混乱を避けるには完全な単語を使うのがよい。
  • "authn" と "authz" は技術者のあいだでは十分通用する。一般向けには "login" と "permissions" を使うのがよい。
  • 現実世界にも似た概念がある。たとえば、社員証は本人確認を行い、アクセス権を付与する。
  • 認可と権限は同じではない。権限とは、特定のユーザーに割り当てられていない権利や特権である。
  • 認可には2つの意味がありうる。ユーザーに特定の操作を行う権限を与える過程と、それを確認する過程である。
  • "access control" は実行時アクセス制御を意味することがある。アプリケーションがユーザー認証後に実行する処理である。
  • "authN" と "authZ" は十分に適切で、よく理解されている。認可は常に権限とユーザーの結び付きに関わる。