跳转到主要内容

Kinto中的Firefox账户支持

项目描述

Kinto中的Firefox账户支持

travis Coverage

Kinto-fxa 允许使用 Firefox Accounts OAuth2 携带令牌在 Kinto 应用程序中进行身份验证。

注意。该项目曾被称为 cliquet-fxa,但随 cliquet 项目更名为 kinto 而更名为

kinto-fxa

它提供

  • 一个身份验证策略类;

  • Kinto 缓存后端集成以进行令牌验证;

  • Kinto 集成以进行心跳视图检查;

  • 一些可选端点以执行 OAuth 舞蹈(可选)。

  • Kinto 文档

  • 问题跟踪器

安装

如官方文档中所述 指出,Firefox Accounts OAuth 集成目前仅限于 Mozilla 依赖的服务。

安装 Python 包

pip install kinto-fxa

在项目配置中包含该包

kinto.includes = kinto_fxa

并使用 pyramid_multiauth 语法配置身份验证策略

multiauth.policies = fxa
multiauth.policy.fxa.use = kinto_fxa.authentication.FxAOAuthAuthenticationPolicy

默认情况下,它将依赖于 Kinto 中配置的缓存。

配置

使用在应用程序注册期间获得的值填写这些设置

fxa-oauth.client_id = 89513028159972bc
fxa-oauth.client_secret = 9aced230585cc0aaea0a3467dd800
fxa-oauth.oauth_uri = https://oauth-stable.dev.lcip.org/v1
fxa-oauth.requested_scope = profile kinto
fxa-oauth.required_scope = kinto
fxa-oauth.webapp.authorized_domains = *
# fxa-oauth.cache_ttl_seconds = 300
# fxa-oauth.state.ttl_seconds = 3600

如果应用程序不应作为重传者(即禁用 OAuth 舞蹈端点)的行为

fxa-oauth.relier.enabled = false

如有必要,覆盖身份验证策略的默认值

# multiauth.policy.fxa.realm = Realm

处理多个 FxA 客户端

如果您想使用相同的 Kinto 服务隔离两个 FxA 应用程序之间的数据以同步它们,可以定义客户端特定配置

fxa-oauth.clients.notes.client_id = 89513028159972bc
fxa-oauth.clients.notes.required_scope = profile app-notes

fxa-oauth.clients.todo.client_id = 1805184631529d5a
fxa-oauth.clients.todo.required_scope = profile app-todo

根据请求的作用域,Kinto Fxa 将分配一个用户 ID 或另一个(使用后缀)

  • fxa:{user_id}-notes 用于前者

  • fxa:{user_id}-todo 用于后者

注意,您仍然可以使用 fxa:{user_id} 来显式地在给定的 FxA 用户之间共享数据。

如果您不提供任何特定权限,则登录带有 app-notes 范围的 Bearer 令牌的用户将无法访问待办事项应用程序数据。

默认存储桶也将被隔离,一个用于 notes,一个用于 todo

登录流程

OAuth 携带令牌

使用此标题使用 OAuth 令牌

Authorization: Bearer <oauth_token>
notes:

如果令牌无效,这将导致返回 401 错误响应。

使用 Web UI 获取令牌

  • 将客户端导航到 GET /fxa-oauth/login?redirect=http://app-endpoint/#。在那里,将设置会话 cookie,并将客户端重定向到 FxA 内容服务器上的登录表单;

  • 在登录页面上提交凭据后,客户端将被重定向到 http://app-endpoint/#{token}(Web 应用程序)。

自定义获取令牌流程

可以使用 GET /v1/fxa-oauth/params 端点获取配置,以便用 Firefox Accounts BrowserID 与 Bearer Token 交换。 有关此行为的 Firefox Account 文档

$ http GET http://localhost:8000/v0/fxa-oauth/params -v

GET /v0/fxa-oauth/params HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
Host: localhost:8000
User-Agent: HTTPie/0.8.0


HTTP/1.1 200 OK
Content-Length: 103
Content-Type: application/json; charset=UTF-8
Date: Thu, 19 Feb 2015 09:28:37 GMT
Server: waitress

{
    "client_id": "89513028159972bc",
    "oauth_uri": "https://oauth-stable.dev.lcip.org",
    "scope": "profile"
}

脚本

《kinto-fxa》库安装了一个《kinto-fxa》命令,用于运行《kinto-fxa》插件附带的工具脚本。目前只有一个是《process-account-events》,它监听亚马逊SQS队列中的账户删除事件,并尝试删除用户数据以符合GDPR规定。

这些脚本有一些额外的依赖项;您可能需要使用 pip install kinto-fxa[scripts] 来安装它们。

要使用它们,请运行 kinto-fxa [脚本名称] [参数]

变更日志

本文档描述了每个过去版本之间的变化。

2.5.3 (2019-07-02)

优化

  • 尽可能延长 OAuthClient 的使用时间,以利用HTTP保持活动状态 (#133)。

2.5.2 (2018-07-05)

错误修复

  • 修复 process-account-events 脚本,以考虑客户端用户ID后缀(修复 #61)

2.5.1 (2018-06-28)

  • process-account-events 脚本上设置指标 (#57)。

  • kinto_fxa.scripts 程序上设置日志 (#58)。

2.5.0 (2018-05-17)

  • 引入新的 kinto_fxa.scripts。目前可用的唯一脚本为《process-account-events》,它监听SQS队列中的用户删除事件,并从该用户默认存储桶中删除数据,以符合GDPR。

2.4.1 (2018-03-15)

  • 将 kinto-fxa 移动到 Kinto github org. (#54)

2.4.0 (2017-11-27)

  • 添加对多个 FxA 客户端的支持 (#52)

2.3.1 (2017-01-30)

错误修复

  • 确保令牌验证的缓存永远不会阻止验证请求(见 Mozilla/PyFxA#48)

2.3.0 (2016-12-22)

内部更改

  • 将模式迁移到 Cornice 2 #38

2.2.0 (2016-10-27)

新功能

  • 改进 FxA 错误消息(修复 #1)

错误修复

  • 优化认证策略,以避免在每个请求中多次验证令牌(修复 #33)

内部更改

  • 使用 kinto.core 中的 Service(修复 #28)

  • 确保它不会捕获 Cornice 2 依赖项(修复 #36)

2.1.0 (2016-09-08)

  • 在功能中添加插件版本。

2.0.0 (2016-05-19)

破坏性更改

  • 项目重命名为 Kinto-fxa 以匹配《cliquet》到《kinto.core》的重命名。

  • 更新到《kinto.core》以与 Kinto 3.0 兼容。此版本不再与 Kinto < 3.0 兼容,请升级!

  • Kinto > 2.12* 时,必须将设置 multiauth.policy.fxa.use 明确设置为 kinto_fxa.authentication.FxAOAuthAuthenticationPolicy

错误修复

  • 修复当 python 以 -O 运行时检查 Authorization 标头的错误(ref mozilla-services/cliquet#592)

1.4.0 (2015-10-28)

  • 更新到 Cliquet 2.9.0

破坏性更改

  • 无法使用 pyramid.includes 设置包含 cliquet-fxa。请改用 cliquet.includes

1.3.2 (2015-10-22)

错误修复

  • 如果 OAuth 舞蹈中断,则返回 408 Request Timeout 错误而不是 401 Unauthenticated 错误。(#11)

  • 不要从 cliquet-fxa 中调用 cliquet.load_default_settings。(#12)

1.3.1 (2015-09-29)

  • 在登录 URL 中用 + 分隔多个作用域。

1.3.0 (2015-09-29)

错误修复

  • 可以在登录流程中请求多个作用域。

  • 应用可能需要多个作用域。

配置更改

  • fxa-oauth.scope 现已弃用。应使用 fxa-oauth.requested_scopefxa-oauth.required_scope

1.2.0 (2015-06-24)

  • 添加默认设置以定义策略“fxa”。现在只需包含 cliquet_fxa 并将 fxa 添加到 multiauth.policies 设置列表即可。

  • 初始化阶段不要检查cliquet缓存的存在。

  • 不要使用Cliquet日志记录器以防止初始化错误。

1.1.0 (2015-06-18)

  • 不要再以fxa_前缀标记已认证用户(#5)

1.0.0 (2015-06-09)

  • Cliquet导入代码

贡献者

项目详情


下载文件

下载适合您平台文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

kinto-fxa-2.5.3.tar.gz (21.6 kB 查看哈希值)

上传时间 源代码

构建分发

kinto_fxa-2.5.3-py2-none-any.whl (28.9 kB 查看哈希值)

上传时间 Python 2

由以下组织支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面