为HTTP触发器配置Basic认证鉴权

在函数计算中,为HTTP触发器配置Basic认证,可以让函数更加简便和安全的被授权用户访问。

背景信息

函数计算支持为HTTP触发器开启Basic认证。在Basic认证中,用户通过在函数计算控制台上配置允许访问函数的用户名和密码等信息,客户端在发起访问时,通过Authorization Header携带有效的Base64编码的用户名和密码信息,仅当访问请求中的用户名密码数据与触发器上配置的用户名和密码数据匹配时,能够成功访问函数。

前提条件

已创建函数并完成HTTP触发器的创建。具体操作,请参见创建函数配置HTTP触发器

使用限制

  • 用户列表中最多可以配置20个用户。

  • 用户名,最少12个字符,最长128个字符,命名要求符合FC的统一资源对象命名规范。

  • 密码,长度在12128个字符之间,包括大写字母、小写字母、数字和至少一个特殊字符! @ # $ % ^ & * ( )

  • 不同用户的密码不能相同,并且尽可能不要使用常见的排列组合作为用户密码,以免密码过于简单导致的安全问题。

  • 配置Basic认证后,请在生产环境使用HTTPS协议,HTTP协议仅用于开发测试,因使用HTTP协议导致的用户名密码泄漏,函数计算不承担安全责任。

  • 函数计算仅负责存储和校验您配置的用户信息,用户的管理需要您自己负责。请及时轮换已经泄漏的用户密码和已经被证明是不安全的密码,用户密码使用时间较长时,也请主动轮换。

操作步骤

步骤一:配置Basic认证

  1. 登录函数计算控制台,在左侧导航栏,单击函数

  2. 在顶部菜单栏,选择地域,然后在函数页面,单击目标函数。

  3. 在函数详情页面,单击触发器页签,然后单击HTTP触发器操作列的编辑

  4. 在编辑触发器面板,设置以下选项,然后单击确定

    • 认证方式:选择Basic认证

    • 用户列表:设置用户名密码。用户名和密码设置要求请参见使用限制

    image

步骤二:操作验证

Curl命令为例,通过Authorization Header携带有效的Base64编码的用户名和密码信息发起验证。

  1. 在目标函数详情页面的触发器页签获取HTTP触发器的公网访问地址。

  2. 在命令行,执行以下命令将用户名和密码进行Base64编码。

    echo -n "用户名:密码" | base64

    执行完成后,获取返回的已编码的用户信息。

  3. 在命令行,执行Curl命令,调用函数。

    命令示例如下:

    curl -X POST "https://example.com" -H "Authorization: Basic YmFzaWMtYXV0aGVudGljYXRpb246MTUyMkBaaHV6aTV6****="

    命令参数说明:

    • 请将示例中https://example.com替换为您步骤一获取的触发器的公网访问地址。

    • 携带的请求头Authorization的值必须以Basic开头,且Basic与后面的用户信息之间必须有空格。

常见问题

  • 为什么开启Basic认证后,访问触发器URL提示:authorization require?

    该提示说明访问HTTP触发器时,未携带有效Authorization头,请检查请求中是否携带了Header Authorization以及Authorization值中用户信息是否正确。

  • 为什么开启Basic认证后,访问触发器URL提示:Authorization header must start with Basic?

    根据RFC 7617,通过Basic认证发起访问,客户端需要携带Authorization头,Authorization头的值以Basic开头。

  • 开启Basic认证后,是否会产生额外的费用?

    不会。函数计算默认提供的网关相关的功能计费都是在函数调用次数中进行收费,所以不管您是否开启Basic认证,都不会产生额外的费用。