0

我在将自定义属性传递给 SP 时遇到问题。

详细信息:我正在为 IDP 使用 developerOKTA 管理员配置文件。我的 SP 是一个 python 应用程序,用户 Django/jinja/Django-CMS

我的应用attribute statement价值是这样的。

尝试1:

用户名|${user.userName}|urn:oasis:names:tc:SAML:2.0:attrname-format:basic, firstName|${user.firstName}|urn:oasis:names:tc:SAML:2.0:attrname-格式:基本,姓氏|${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(boolean 类型)和userRole(string 类型)是定义的自定义属性,并在两个位置(在用户配置文件和应用程序用户配置文件中)都给定了值。而template_saml_2_0是app 用户对象,user是用户对象。

接下来,我将这些变量映射在一起:

okta->app 的映射

user.is_publisher 映射到 is_publisher,并且

app->okta 的映射

appuser.is_publisher 映射到 is_publisher。

对其他属性进行类似操作。

单击应用程序 chiklet 时,此属性语句会生成“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-格式:基本,

现在,此更改为我提供了userRole(字符串类型)的值,而不是OKTA传递给 SP 的断言 xml 中的is_publisher (布尔类型)的值。我猜如果自定义属性只是字符串类型而不是任何其他类型,这将返回值。是这样吗?

你能告诉我哪里出错了吗?我需要根据我在 Attempt1 中未能完成的应用程序设置用户角色。而在 Attempt2 中,我只得到 String 类型 CustomAttribute 的值。

4

0 回答 0