質問: 自動生成されるIDをパスワードの代わりにユーザに教えればそれでいいのではないかと思うのですがそれではダメなのですか。
回答: 結論として、そのような仕様にする場合はあります。ただし、通常自動生成した文字列は、IDとは呼ばず、トークンなどと呼ぶことが多いと思います。 ただ、トークンは8文字英数字程度では、適当に生成した文字列で偶然「誰かに」あたる可能性が出てくるので、トークンとしては数十文字程度の長い文字列が用いられます。こうなると、記憶による運用は不可能ですし、一々コピペするのも面倒なので、以下のようなトークン付きのURLを発行して、アクセスするたびに用いることになります。 https://example.jp/?token=f6ecac9da6de8bfb1dbd8995140aba51d19970ff そうなると、このURLをどうやって覚えておくかが問題になります。ブラウザのブックマーク機能を使う場合も多いと思いますが、離席中に覗かれるなど、パスワードに比べて安全性が高いわけではなくなります。 また、トークンが何らかの理由で漏洩した場合、なんらかの方法で本人確認(たとえば登録済みメールアドレスで受信できること)した後に「トークンの再生成」が必要になります。トークンがわからなくなった場合にもトークンの再生成は必要です。トークンの再生成には、パスワードリセットのやり方が参考になりますが、結局パスワード方式と実装上の手間はあまり変わらなくなります。 また、トークンは他人に見せてはいけないので、teratailやtwitterなどのように、画面表示上のユーザIDとして用いることはできません。トークンとは別に「ニックネーム」を設けてもいいのですが、そうすると、トークンよりもニックネームの方がユーザIDに近い性格をもつようになってしまいます。 このように、トークン方式は、汎用性を高めようとするとパスワード方式に比べて簡便とはいえず、その割に安全性も高いとは言えないところが難点です。 以上のような理由から、トークン方式は、一時的にアクセス権限を与えるような応用には用いられますが、teratailのように長期間ユーザ識別をおこなうような目的には向かないわけです。そのため、一般的にはパスワード方式が用いられることが多いのです。つまり、パスワード方式は、欠点はあるものの、総合的に見ると汎用性の高い優れた方法であり、そのために広く使われているのです。