参加サーバーの一部が Windows (IIS) ボックスになる単純なシングル サインオン シナリオを実装しようとしています。これには SPNEGO が適しているようです。
シナリオは次のとおりです。
- ユーザーは、自分のユーザー名とパスワードを使用して SSO サービスにログインします。私は何らかのメカニズムを使用して彼を認証します。
- しばらくして、ユーザーはアプリ A にアクセスしたいと考えています。
- アプリ A に対するユーザーの要求は、SSO サービスによってインターセプトされます。SSO サービスは SPNEGO を使用して、ユーザーをアプリ A にログインさせます。
- SSO サービスがアプリ A の Web ページにアクセスし、「WWW-Authenticate: Negotiate」応答を取得します。
- SSO サービスは、ユーザーに代わって "Authorization: Negotiate xxx" 応答を生成し、アプリ A に応答します。ユーザーはアプリ A にログインしています。
- SSO サービスは、アプリ A に対する後続のユーザー リクエストをインターセプトし、Authorization ヘッダーを挿入してからアプリ A に渡します。
- アプリ A に対するユーザーの要求は、SSO サービスによってインターセプトされます。SSO サービスは SPNEGO を使用して、ユーザーをアプリ A にログインさせます。
そうですか?
必要なものは 2 つあります (少なくとも今考えられることは):
- ユーザーに代わって "Authorization: Negotiate xxx" トークンを生成する機能 (可能であれば Python を使用)
- Python で「Authorization: Negotiate xxx」ヘッダーを検証する機能 (プロジェクトの後半)