0

だから、私は人のmysqlデータベース資格情報を使用してWebサイトを認証する非常に古いシステムで作業しています(データベースは元々コマンドラインからのみアクセスされていましたが、現在はphpフロントエンドからアクセスされています)。いくつかの内部的な理由 (およびユーザーの履歴を保持するため) により、古い認証をそのままにしておく必要があります。私は、このシステムに openid 認証を追加する責任を負っています。どういうわけか、openid を介してサイトにログインするときに、ユーザーの mysql ユーザー名とパスワードを取得できるようにする必要があります (ちなみに Zend フレームワークを使用しています)。ユーザーが自分のmysql資格情報を提供する必要がある最初のログイン時に登録を要求するだけでよいと考えましたが、パスワードをプレーンテキストで保存したくありません。また、全員の mysql パスワードを空白にして、ユーザーを設定することも検討しました。■ mysql ユーザー名を手動で (ユーザーは任意のユーザー名を提供できるため、ユーザーに提供させるのではなく)。これはセキュリティの悪夢に変わりつつあります。代替案について何か提案はありますか?

ちなみに、これはLinuxサーバーで実行されています。また、mysql のバージョンが 5.0 であるため、mysql プラグ可能認証を使用できません (プラグ可能認証には mysql 5.5 が必要です)。いいえ、更新できません。

4

2 に答える 2

2

MySQL のパスワードはハッシュ化されているため、MySQL から平文のパスワードを抽出することはできません。それにより、質問で考慮した2つのオプションが残ると思います。

  • ユーザーが OpenID で初めてログインするときに、MySQL のユーザーのパスワードを、アプリケーションで認識されている新しいパスワードに置き換えます。アプリケーションは、そのパスワードを使用して、OpenID を使用しているユーザーのアカウントにログインします。

    短所: OpenID を使用するユーザーは、自分のパスワードを知らないため、MySQL の直接認証に戻ることができません。MySQLコマンドラインツールさえ使用していません。これは、一度 OpenID を使用したユーザーは、今後も OpenID を使用する必要があることを意味します。

  • ユーザーが OpenID を使用するために登録すると、アプリケーションはユーザーのパスワードを記憶します。

    短所:アプリケーションはプレーンテキストのパスワードのリストを保持します

    短所:ユーザーが自分の MySQL パスワードを自分で変更すると、アプリケーションが壊れます。

3 番目のオプション:

  • OpenID を使用するユーザーごとに、汎用パスワードを持つ 2 番目の MySQL ユーザーを作成します。通常のアカウントに割り当てられたすべての権限を、この「シャドウ」アカウントにコピーします。

    短所:通常のユーザーとシャドウ ユーザーは同期を維持する必要があります。そのため、一部の MySQL 権限が一方から追加または取り消された場合、それらは同時に他方からも追加または取り消される必要があります。これを怠ると大変なことになります。

于 2012-06-11T16:47:56.863 に答える
0

CLI クライアントの openid 認証を賢明に実行できないことを考えると (PAM を使用しても)、openid ユーザーと mysql ユーザーを調整しようとしないことを強くお勧めします。データベースに接続します。

于 2012-06-11T16:46:55.123 に答える