首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法处理Perl中的HTTP多属性值

无法处理Perl中的HTTP多属性值
EN

Stack Overflow用户
提问于 2022-01-11 11:07:20
回答 1查看 92关注 0票数 0

我面临着一个很奇怪的问题。我用OTRS接口SAML身份验证,这是一个用Perl编写的ITSM,身份提供者发送属性如下:

代码语言:javascript
复制
LoginName : dev-znuny02
mail      : test2@company.dev
Profile   : company.autre.idp.v2()
Profile   : company.autre.mcf.sp(dev)
givenName : MyName
sn        : Test2

我使用一个名为https://jdennis.fedorapeople.org/doc/mellon-user-guide/mellon_user_guide.html的模块来处理这些问题,如您所见,属性Profile是多值的。简而言之,我使用以下代码片段检索所有这些值:

代码语言:javascript
复制
sub new {
  my ( $Type, %Param ) = @_;

  # allocate new hash for object
  my $Self = {};
  bless( $Self, $Type );
  $Self->{ConfigObject}    = $Kernel::OM->Get('Kernel::Config');
  $Self->{UserObject}      = Kernel::System::User->new( %{$Self} );

  # Handle header's attributes
  $Self->{loginName} = 'MELLON_LoginName';
  $Self->{eMail}     = 'MELLON_mail';
  $Self->{Profile_0} = 'MELLON_Profile_0';
  $Self->{Profile_1} = 'MELLON_Profile_1';
  $Self->{gName}     = 'MELLON_givenName';
  $Self->{sName}     = 'MELLON_sn';


  return $Self;
}

sub Auth {
  my ( $Self, %Param ) = @_;

  # get params
  my $lname       =  $ENV{$Self->{loginName}};
  my $email       =  $ENV{$Self->{eMail}};
  my $profile0    =  $ENV{$Self->{Profile_0}};
  my $profile1    =  $ENV{$Self->{Profile_1}};
  my $gname       =  $ENV{$Self->{gName}};
  my $sname       =  $ENV{$Self->{sName}};
  ...
}

除了属性Profile之外,我可以处理属性的所有值。当我看文档的时候,他们说:

如果一个属性有多个值,那么它们将被存储为MELLON_<name>_0, MELLON_<name>_1, MELLON_<name>_2

当然,我启动了Mellon模块的诊断,并且正确地接收到了信息:

代码语言:javascript
复制
  ...
  MELLON_LoginName   : dev_znuny02
  MELLON_LoginName_0 : dev_znuny02
  MELLON_mail        : test2@company.dev
  MELLON_mail_0      : test2@company.dev
  MELLON_Profile     : company.autre.idp.v2()
  MELLON_Profile_0   : company.autre.idp.v2()
  MELLON_Profile_1   : company.autre.mcf.sp(dev)
  ...

当我试图操作Perl脚本中的MELLON_Profile_0MELLON_Profile_1属性时,分配给它的变量似乎是空的。你知道这里有什么问题吗?

欢迎任何帮助!多谢各位

PS :我无法控制身份提供者,所以我无法编辑发送的属性

EN

回答 1

Stack Overflow用户

发布于 2022-01-16 17:34:17

我没有设法使其工作,但我找到了一个解决办法,以防止没有Profile属性值的用户登录到应用程序中:

代码语言:javascript
复制
MellonCond Profile company.autre.mcf.sp(dev)

根据文档

您还可以使用SAML属性来控制Mellon身份验证是否成功(一种授权形式)。因此,即使IdP可能已经成功地对用户进行了身份验证,您也可以通过MellonCond指令应用其他约束。基本思想是,每个MellonCond指令都指定一个条件,该条件的计算结果为True或False。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70665749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档