0

omn​​iauth-cas 1.0.4 を使用して、cas サーバーでユーザーを認証しています。ただし、サーバーは CAS 1 アーキテクチャをサポートしていますが、gem は CAS 2 アーキテクチャをサポートしています。

CAS 1 サービス バリデータは 2 行で応答します (テキスト/プレーン HTTP 応答)。最初の行は、アプリケーションが提示したチケットが有効かどうかに応じて、yes または no のいずれかです。チケットが有効な場合、2 行目にはチケット所有者の NetID、つまり認証に成功したユーザーの ID が含まれます。チケットが無効な場合、2 行目は空です。したがって、応答の例は次のとおりです。 yes peon チケットが有効であった場合、CAS はすぐにチケットを削除し、再度使用できないようにします。しかし、CAS 2 アーキテクチャは XML スニペットで応答します。CAS 1 アーキテクチャをサポートする ant gem はありますか?

4

1 に答える 1

1

私の簡単な Google 検索では、CAS 1.0 機能を提供する gem は見つかりませんでしたが、それをサポートするために既存のライブラリを変更することは難しくありません。(私は Ruby 開発者ではありません。または、自分でやるつもりです。)

https://github.com/dlindahl/omniauth-cas/ (そうでない場合は公式の場所)を複製できます。必要な変更の大部分はTicket Validatorにあります。XML コードを削除して、標準の行解析コードに置き換える必要があります。get_service_response_body が応答である必要があります。find_authentication_success は、応答の 2 行目を確認する必要があります。parse_user_info は、応答の 1 行目にあるユーザーに hash["user"] を割り当てる必要があります。

https://github.com/dlindahl/omniauth-cas/blob/master/lib/omniauth/strategies/cas.rbファイルも変更する必要があります。CAS 1.0 は、/serviceValidate ではなく、/validate を通じて処理されます。

于 2013-10-10T05:29:32.093 に答える