2016-08-16 45 views
2

我想使用OneLogin编写一个命令行程序,该程序需要一个用户名/密码并生成可用于向其他网站进行身份验证的SAML断言。我可以使用OneLogin API在独立应用程序中生成SAML声明吗?

问题是调用“生成SAML声明”API本身需要从API凭证生成访问令牌。因此,将我的应用分发给用户需要我在API凭证中烘烤才能进行此调用。这样可以,但唯一允许调用者发布到SAML资源的授权配置文件是“全部管理”,这是比安全提供的更多权限。

有没有人做过这样的事情?

OneLogin people,你能添加一个API凭证类型来只调用SAML Assertion API吗?或者你可以打开API。 (请注意,AWS的“AssumeRoleWithSAML”API不需要用户凭证 - API的全部要点是您拥有要转换为其他凭证类型的凭证。)

回答

0

我们将很快发布更新以降低因为您只是交换SAML断言的用户凭据,所以将令牌的类型设置为“读取/写入用户”。这足够吗?

注:我最初误写成了“读”,而不是“读/写”

+0

是的,我认为这是有效的。 – Kevin

+0

我不确定我是否理解为什么如果用户向SAML API提供有效凭证和应用程序ID时需要OneLogin API密钥。一种用例是使用上述STS AssumeRoleWithSAML API调用为AWS API生成联合临时凭证。我希望我的用户能够联合使用已配置的角色,获取临时访问密钥,并将其用于AWS CLI或其他API调用。 – bobmagoo

1

你给开发者一个个人应用程序生成的SAML令牌或者你一个返回SAML令牌的Web服务?

前者不好(因为该应用程序有关键),后者是无限更安全。

当我们降低使用密钥获取SAML断言所需的权限时(ID &机密),您仍应考虑将其构建为Web服务。一个你的命令行工具应该调用来获取SAML断言。

因为与流行观点相反 - 云端意味着更好的安全性。

+0

谢谢。我希望给开发者一个个人应用程序。这一切都是为了我公司内部的使用,我不希望有一个单独的应用程序的麻烦,其工作只是将一种类型的凭证转换为另一种类型的凭证。 (注意,要保证密码安全,云应用程序也需要SSL等)。显然,烘焙一个键与onelogin交谈并不理想,但我的观点是,onelogin首先需要对SAML API进行身份验证是愚蠢的。我写的SAML交换云服务只是onelogin API的一个简单包装。 – Kevin

+0

严重的是,'云'确实意味着更好的安全性。 我个人的安全担忧是,愚蠢的(但仍然邪恶的)类型会发现滥用API(没有oAuth)比使用脚本浏览器更容易。 除了用户名/密码之外,还需要一个有效的oAuth标记,这让糟糕的参与者自动化变得更加困难(并且可追踪)。无论他们是试图破解凭据还是恶意地锁定用户(通过错误的密码尝试)从帐户中删除。 我明白,一个额外的网络服务是一个痛苦。但这是正确的,安全明智的。 –

0

现在有一个Authentication Only API范围,它可以被烘焙到您的应用程序中。

在此范围内可用的终点包括:

  • 验证因子(SAML断言)
  • 生成SAML断言
  • 验证因子(登录)
  • 创建会话登录令牌
  • 登录用户Out

编写一个web应用程序获得SAML断言将是最好的解决方案,并让CLI与之交互。特别是如果您考虑“登录用户输出”,只要您可以猜出身份证(简单),即可注销任何特定用户。 如果您信任您的员工,则可以在CLI中嵌入Authentication Only范围内的客户端ID /密码。这正是我们在OneLogin AWS-STS CLI工具的第一步所要做的。当然,我们可能会有一个流氓员工滥用这一点,但这是一个边缘案例,很容易撤销客户端ID /密码,并推出新版本的客户端ID /密码。

相关问题