dflydev/stack-hawk

Hawk Stack中间件

dev-master / 1.0.x-dev 2013-08-02 04:22 UTC

This package is auto-updated.

Last update: 2024-08-29 04:08:55 UTC


README

A Stack middleware to enable Hawk authentication following the STACK-2 Authentication conventions.

安装

通过Composer作为dflydev/stack-hawk

用法

Hawk中间件接受以下选项

  • credentials_provider: (必填) 一个Dflydev\Hawk\Credentials\CredentialsProviderInterface的实例,或者一个接收一个ID作为其唯一参数的可调用函数,并期望返回一个Dflydev\Hawk\Credentials\CredentialsInterface或null。
  • sign_response: 响应应该被签名吗?布尔值。默认为true
  • validate_payload_response: 应该验证响应体吗?布尔值。默认为true
  • validate_payload_request: 应该验证请求数据吗?布尔值。默认为true
  • crypto: 一个Dflydev\Hawk\Crypto\Crypto的实例,或者一个返回Dflydev\Hawk\Crypto\Crypto实例的可调用函数。
  • server: 一个Dflydev\Hawk\Server\ServerInterface的实例,或者一个返回Dflydev\Hawk\Server\ServerInterface实例的可调用函数。
  • time_provider: 一个Dflydev\Hawk\Time\TimeProviderInterface的实例,或者一个返回Dflydev\Hawk\Time\TimeProviderInterface实例的可调用函数。
  • token_translator: 一个接收一个Dflydev\Hawk\Credentials\CredentialsInterface作为其唯一参数的可调用函数,并期望返回一个token。默认实现返回$credentials->id()作为token。
  • firewall: 与dflydev/stack-firewall兼容的防火墙配置。
<?php

use Dflydev\Hawk\Credentials\Credentials;

$credentialsProvider = function ($id) {
    // Simulate a know valid set of credentials.
    $validCredentials = new Credentials('key1234', 'sha256', 'id1234');

    if ($validCredentials === $id) {
        return $validCredentials;
    }
};

$tokenTranslator = function (CredentialsInterface $credentials) {
    // This is the same as the default implementation and shown merely for
    // demonstration purposes. If the token should be something other than
    // the ID this callback can be defined; otherwise, if the ID is sufficient,
    // defining this callback can be skipped entirely.
    return $credentials->id();
};

$app = new Dflydev\Stack\Hawk($app, [
    'firewall' => [
        ['path' => '/api'], // Only /api requests will be protected by Hawk!
    ],
    'credentials_provider' => $credentialsProvider,
    'token_translator' => $tokenTranslator,
    'sign_response' => false, // do not sign the response; default true
]);

许可证

MIT,请参阅LICENSE。

社区

如果您有任何问题或想帮忙,请加入我们位于irc.freenode.net#stackphp#dflydev频道。