当前位置: 首页 > 知识库问答 >
问题:

如何使用SAML断言激活OneLogin Protect推送挑战

张丰
2023-03-14

我发现,要将OneLogin Protect与saml断言一起使用,您需要调用SAML verify factor,而不提供OTP,并在这里阅读类似的问题,但是如果我简单地将它放入一个带有sleep的循环中,用户会受到OTP调用的轰炸,直到他们点击“Accept”。如果用户花了10-20秒拿出手机,而我睡了20秒,这意味着那些可以立即使用手机并在2-3秒内响应的用户,必须等待20秒来弥补较慢的呼叫。

为了解决这个问题,我想在不发送推送通知的情况下检查saml断言验证,而只检查state_token。

我还注意到,如果我不使用SAML断言,我可以这样做,如下所述:https://developers . onelog in . com/api-docs/1/multi-factor-authentic ation/overview,但这需要我授予管理用户或管理API键的所有权限。由于这是一个用于处理aws saml auth的Python cli实用html" target="_blank">程序,无论如何,我们都需要将这些API密钥分发给用户,这对于用户登录aws来说似乎是过多的特权。

有谁知道如何使用 SAMl 断言检查 OneLogin Protect 的 OTP 状态,而无需在每次检查状态时创建新的 OTP 调用?

示例代码

ol_client = OneLoginClient(
    'client_id',
    'client_secret',
    'us',
)
saml_resp = ol_client.get_saml_assertion(
    'ol_username',
    'ol_password',
    'aws_app_id',
    'subdomain'
)
call_result =ol_client.get_saml_assertion_verifying(
    'onelogin_aws_app_id',
    device.id,
    saml_resp.mfa.state_token
)

if call_result is None:

    verify_result = None
    while verify_result is None:
        sleep(1)
        verify_result =ol_client.get_saml_assertion_verifying(
            'aws_app_id',
            device.id,
            saml_resp.mfa.state_token
        )

共有1个答案

荣晨朗
2023-03-14

我现在已经找到答案了。只是忘了更新:

API 在 verifyFactor 终结点中公开一个“消息”字段。当用户对其执行操作处于挂起状态时,它将包含挂起的字符串。

rMfa, err = c.VerifyFactor(token, &pMfa)
for strings.Contains(rMfa.Message, "pending") && timeout > 0 {
    time.Sleep(time.Duration(MFAInterval) * time.Second)
    rMfa, err = c.VerifyFactor(token, &pMfa)
    if err != nil {
        s.Stop()
        return nil, err
    }
    timeout -= MFAInterval
}

我要求每秒检查一次,直到超时到期。完整的实现可以在这里看到:https://github.com/allcloud-io/clisso/blob/master/onelogin/get.go#L133

 类似资料:
  • 我正在尝试使用谷歌办公套件设置SAML。但是我得到了这个错误 我已经配置断言应该在我的SP中签名。我可以在其他IDP(如onelogin、okta)中看到签署响应断言的选项。该配置适用于其他IDP,但看不到在谷歌办公套件SAML中唱响应断言的选项。 在Gsuite中,我只能看到签名响应的选项,而不能看到断言。 如何正确设置此设置? SP元数据如下所示:

  • 我正在使用多个SP实现单点登录。以下是我的基本理解: 1) 浏览器(用户)向服务提供商(SP)请求资源 2)SP重定向(使用SAML请求)到身份提供程序(IdP) 3)由于这是第一次登录,用户将向(IdP)提供其有效凭据 4)然后,IdP将浏览器(带有包含SAML令牌的SAML响应)重定向到SP页面。 现在,假设我有服务提供商A和服务提供商B。一个用户已经完成了关于服务提供商A的步骤。从服务提供商

  • 我正在寻找一些方法(最好是通过Java代码),使我能够通过SSO登录从IDP(即ForgeRock的OpenAM)获取服务提供商(SP)的SAML断言。 SP已配置为与IDP交互(例如vCloud Director- 我似乎找不到任何执行SSO登录的方法(通过使用IDP的SAML断言进行身份验证)。到目前为止,我已经看到了十几条参考文献,包括断言(AssertionIDRequestUtil)。来

  • 我有一个webservice操作,其中我将获得SAML断言作为请求体的一部分。我跟踪XSD: saml:断言是指:< br>

  • 我有一个Java Web应用程序,我想将其作为服务提供商并实现SAML。我不确定如何做这件事的工作流程。 我已经阅读了这个SO问题,但仍然无法完全理解。在问题中,他们说他们需要向IDP发送请求,如果我是对的,称为断言。 如何创建断言?我在那里看到了样品。但是在哪里传递登录凭据呢? 另外,我如何在IDP注册我的应用程序,我是否需要安装IDP为此提供的一些证书?工作流程是什么? 谢谢

  • 这是我面临的问题,需要一些帮助/指导。 我已经从引擎生成了一条XML消息,需要将其解析为服务。为了做到这一点,我必须将该消息更改为SOAP消息,并在其上插入SAML令牌。我正在尝试使用C#代码执行此操作。下面是我生成的输入消息和预期的输出: 近期产量