AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 828170
Accepted
Mikhail T.
Mikhail T.
Asked: 2017-01-24 18:05:40 +0800 CST2017-01-24 18:05:40 +0800 CST 2017-01-24 18:05:40 +0800 CST

Foreman 可以允许匿名只读访问吗?

  • 772

我需要一个自动化的工作来对 Foreman 执行 REST API 调用,我宁愿不为它设置一个帐户——然后永远维护密码。

然而,Foreman 似乎只有“全有或全无”——如果任何事情都需要身份验证 ( :login: true),那么一切都需要身份验证。

这真的是真的吗,还是外观具有欺骗性,可以告诉工头允许匿名查找和主机浏览,同时仍需要对任何更改进行身份验证?

authentication foreman
  • 1 1 个回答
  • 540 Views

1 个回答

  • Voted
  1. Best Answer
    Mikhail T.
    2017-01-26T12:16:22+08:002017-01-26T12:16:22+08:00

    好的,事实证明,Foreman 支持 OAuth1 类型的访问,这并不比简单的静态用户名/密码好多少(甚至任何)。更糟糕的是,除非您通过将此类访问映射到非特权帐户来采取特殊措施,否则使用 OAuth1 的连接将具有管理员权限。

    访问 Foreman 安装的设置页面以打开映射和/或学习/设置 OAuth1“密钥”和“秘密”字符串。

    虽然真实用户可能正在通过 LDAP(例如针对您的公司 Active Directory)或其他方式进行身份验证,但使用 OAuth1 的脚本可以永远使用相同的“密钥”和“秘密”值——它们甚至不会过期。

    编辑:启用用户映射似乎根本不会提高安全性——可以指定任何现有的帐户名,并且不需要知道帐户的密码或任何其他机密。

    因此,我用 Python 实现的简单 Foreman-search 脚本是(不支持分页——我的所有查询都返回不到 50 个条目):

    from requests_oauthlib import OAuth1Session
    import json
    import sys
    
    search=sys.argv[1]
    fields=sys.argv[2:]
    if not fields:
        fields = ['ip']
    
    URL=("https://foreman.example.net/api/v2/hosts?search=%s" % search)
    
    # The below highly-secret credentials come from
    #
    #   https://foreman.example.net/settings
    #
    Key='mykey'
    Secret='mysecret'
    User='readonly'
    
    session=OAuth1Session(Key, Secret)
    # The FOREMAN-USER header is necessary, if mapping of OAuth-requests is
    # turned on in Foreman's settings. The username must exist and have the
    # right "roles" enabled to allow the account to perform the request.
    session.headers.update({'FOREMAN-USER': User})
    
    request=session.get(URL, verify='/path/to/your/CA/certificate.crt')
    
    if not request.ok:
        request.raise_for_status()
    
    response=json.loads(request.content)
    results=response["results"]
    
    for i in xrange(0, response["subtotal"]):
        entry=results[i]
        if i > 0:
            print
        for field in fields:
            try:
                print entry[field],
            except KeyError:
            print '-',
    
    • 1

相关问题

  • 如何在使用 RPC over HTTPS 时停止 Outlook 2007 要求提供凭据

  • 针对 Leopard 服务器的 OS X 登录身份验证

  • 允许用户更改其 Active Directory 密码的 Web 界面

  • MOSS 2007 无法使用 ActiveDirectoryMembershipProvider 配置表单身份验证

  • 通过 VPN 更改 Active Directory 密码

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve