カスタム属性を SP に渡すときに問題に直面しています。
詳細: IDP に developersOKTA 管理者プロファイルを使用しています。私のSPは、Django/jinja/Django-CMSを使用するpythonアプリケーションです
私のアプリのattribute statement
価値はこれです。
試行 1:
userName|${user.userName}|urn:oasis:names:tc:SAML:2.0:attrname-format:basic, firstName|${user.firstName}|urn:oasis:names:tc:SAML:2.0:attrname- format:basic, lastName|${user.lastName}|urn:oasis:names:tc:SAML:2.0:attrname-format:basic, email|${user.email}|urn:oasis:names:tc:SAML: 2.0:attrname-format:basic, is_publisher|${template_saml_2_0.is_publisher}|urn:oasis:names:tc:SAML:2.0:attrname-format:basic, userRole|${template_saml_2_0.userRole}|urn:oasis:names: tc:SAML:2.0:attrname-format:basic,
ここで、is_publisher (ブール型) とuserRole (文字列型) はカスタム属性で定義され、ユーザー プロファイルとアプリ ユーザー プロファイルの両方で値が指定されます。そして、template_saml_2_0はアプリ ユーザー オブジェクトであり、userはユーザー オブジェクトです。
次に、これらの変数をまとめてマッピングしました。
okta->app のマッピング
user.is_publisher は is_publisher にマップされ、
app->okta のマッピング
appuser.is_publisher は is_publisher にマップされます。
他の属性についても同様です。
アプリ チクレットをクリックすると、この属性ステートメントで「500 内部サーバー エラー」が生成されます。このエラーは、okta が SP を呼び出す前にトリガーされます。SP のログに何も記録されていないことがわかりました。また、OKTA IDP のログを追跡する方法もわかりません。
試行 2:。
ここでは、カスタム属性のユーザー オブジェクトから値を取得し、残りは試行 1 と同じにします。
is_publisher|${user.is_publisher}|urn:oasis:names:tc:SAML:2.0:attrname-format:basic, userRole|${user.userRole}|urn:oasis:names:tc:SAML:2.0:attrname-形式:基本、
この変更により、OKTA によって SP に渡されるアサーション xml のis_publisher (ブール型) ではなく、 userRole (文字列型)の値が得られます。カスタム属性が文字列型のみで、他の型ではない場合、これは値を返すと思います。そうですか?
どこが間違っているのか教えてください。Attempt1 で失敗したアプリケーションに応じて、ユーザーの役割を設定する必要があります。Attempt2 では、String 型の CustomAttribute の値のみを取得しています。