0

カスタム属性を 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 の値のみを取得しています。

4

0 に答える 0