跳转到主要内容

Django API身份验证和集中授权的应用程序

项目描述

Django工具,用于共享API身份验证和数据分析。

django-locksmith提供了一些Django应用程序,包括locksmith.hub、locksmith.auth和locksmith.mongoauth。

locksmith.hub是一个应用程序,它简化了注册,并提供了对任何API报告的通用分析支持。

locksmith.auth提供从中心服务器发行API密钥和验证API调用的机制。它还包括一个管理命令,用于向locksmith.hub实例提交夜间报告。

locksmith.mongoauth提供与locksmith.auth相同的接口,但不是使用Django的ORM,而是依赖于pymongo并使用MongoDB数据库。与locksmith.auth类似,它还包括一种方式,可以将夜间使用报告提交给locksmith.hub实例。

django-locksmith是Sunlight Labs的项目(c)2011。由James Turk编写 <jturk@sunlightfoundation.com>。

所有代码都在BSD风格许可下,有关详细信息,请参阅LICENSE。

要求

对于locksmith.hub:* python >= 2.6 * Django >= 1.4 * South >= 0.7.6 * django-taggit * celery >= 3.0.16

对于locksmith.auth和locksmith.mongoauth:* python >= 2.5 * Django >= 1.2

locksmith.hub

locksmith.hub提供了一些视图、认证后端和管理命令。locksmith.hub的单个实例可以作为任何数量相关API的核心。

设置

要使用locksmith.hub,需要在settings.py中添加一些内容。

INSTALLED_APPS中添加‘locksmith.hub’。

AUTHENTICATION_BACKENDS中添加‘locksmith.hub.auth_backend.LocksmithBackend’。

这将使locksmith.hub的模型和管理命令可用,并允许用户使用他们的电子邮件和apikey进行登录。

可选设置

LOCKSMITH_EMAIL_SUBJECT:如果设置,将用作用户请求密钥时发送的电子邮件的主题。(默认为‘API注册’)LOCKSMITH_REPLICATED_APIS:Locksmith有两种密钥同步机制。默认使用较老的、有状态的机制。要选择使用较新的、无状态的机制进行API,请在此处添加API的名称。这是一个临时设置。在0.8版本中,所有API都将使用新机制,此设置将引发弃用警告。

模板

locksmith.hub应用提供了一套前端模板,可以集成到您的网站中。为了提供最大的灵活性,这些模板扩展了您的项目基础模板。您应使用LOCKSMITH_BASE_TEMPLATE指定基础模板的路径。您还应指定一个模板,当用户缺乏对给定视图的授权时显示该模板,通过设置LOCKSMITH_UNAUTHORIZED_TEMPLATE

locksmith.hub的每个视图都允许您指定一个视图以替换默认视图。这允许您在基础和顶级模板中使用{% include %}标签。如果需要,您可以使用这些设置覆盖每个视图的模板

LOCKSMITH_ANALYTICS_INDEX_TEMPLATE LOCKSMITH_API_ANALYTICS_TEMPLATE LOCKSMITH_KEY_ANALYTICS_TEMPLATE LOCKSMITH_KEYS_LIST_TEMPLATE LOCKSMITH_KEYS_LEADERBOARD_TEMPLATE LOCKSMITH_REGISTER_TEMPLATE

URLs

locksmith.hub提供两组URL模式,一组用于注册,另一组用于分析。

它们可以通过以下行添加到您的urls.py中

(r’^’, include(‘locksmith.hub.urls’)),

这添加了一个accounts/路径,包含面向用户的URL,并添加了一个analytics/路径,该路径添加了只有员工才能访问的分析视图。

locksmith.auth和locksmith.mongoauth

locksmith.auth和locksmith.mongoauth具有相同的目的,基本上可以互换。

这两个应用都提供URL端点和一条管理命令,旨在使编写从locksmith.hub实例获取其认证详情的API尽可能简单。

在以下大多数地方它们可以互换,并表示为locksmith.(mongo)auth,如果您更喜欢将密钥/日志存储在MongoDB中,请使用locksmith.mongoauth,如果您更喜欢使用标准Django模型,请使用locksmith.auth

安装

  • 将‘locksmith.(mongo)auth’添加到INSTALLED_APPS

  • 将类似以下行添加到urls.py中:(r’^api/’, include(‘locksmith.(mongo)auth.urls’))

将以下设置添加到您的settings.py中

LOCKSMITH_HUB_URL

您的locksmith.hub实例的URL

LOCKSMITH_SIGNING_KEY

此locksmith实例的签名密钥

LOCKSMITH_API_NAME

此locksmith实例的名称

您可以选择启用APIKeyMiddleware,通过将'locksmith.(mongo)auth.middleware.APIKeyMiddleware'添加到您的MIDDLEWARE_CLASSES。此中间件使用了两个额外的可选设置

LOCKSMITH_QS_PARAM

用于检查API密钥的查询字符串参数(默认:apikey)

LOCKSMITH_HTTP_HEADER

用于检查API密钥的HTTP头(默认:HTTP_X_APIKEY)

locksmith.auth设置

如果使用locksmith.auth,则必须添加一些额外的设置以启用通过./manage.py apireport进行统计报告

LOCKSMITH_STATS_APP

API日志模型的应用程序(默认:api)

LOCKSMITH_STATS_MODEL

API日志模型名称(默认:LogEntry)

LOCKSMITH_STATS_DATE_FIELD

日志模型上的时间戳字段名称(默认:timestamp)

LOCKSMITH_STATS_ENDPOINT_FIELD

日志模型上的端点字段名称(默认:method)

LOCKSMITH_STATS_USER_FIELD

日志模型上的键字段名称(默认:caller_key)

locksmith.mongoauth设置

如果使用locksmith.mongoauth,可以提供多个设置来配置MongoDB连接。

LOCKSMITH_MONGO_HOST

MongoDB服务器的地址(默认:localhost)

LOCKSMITH_MONGO_PORT

MongoDB服务器的端口(默认:27017)

LOCKSMITH_MONGO_DATABASE

MongoDB数据库名称(默认:locksmith)

用法

如果使用locksmith.auth,将使用locksmith.auth.models.ApiKey模型来存储API密钥信息。

如果使用locksmith.mongoauth,将创建一个名为locksmith.keys的集合,包含‘_id’,‘status’和‘email’字段。

当用户将密钥传递给您的API时,您应该在服务请求之前检查是否存在这样的ApiKey对象并且它是否处于活动状态(即status=’A’)。如果使用提供的APIKeyMiddleware,此检查将自动处理。

报告统计数据

要向locksmith.hub实例报告您的API使用情况,可以每天调用./manage.py apireport

连接locksmith.hub和locksmith.auth实例

假设您已有一个如上所述运行的locksmith.hub实例和一个locksmith.(mongo)auth实例,最后一步是将这两个实例连接起来,以便API注册成为实际可用的密钥,并且分析能够返回。

hub:为新的API添加一个新的locksmith.hub.Api实例(选择一个名称和签名密钥) # hub:通过调用./manage.py pushkeys将所有现有密钥推送到新API的locksmith auth端点

假设您已经有一个常规的cronjob来推送新密钥,新的API现在将与其他API一样收到新密钥的通知。

TODO:记录非locksmith.auth启用API如何推送至locksmith.hub

项目详情


下载文件

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

源分发

django-locksmith-0.8.0.tar.gz (397.1 kB 查看散列)

上传时间

由以下机构支持

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