5

ServiceStack を使用して次のシナリオを実装するにはどうすればよいですか?

最初のリクエストはhttp://localhost/auth、Authorization ヘッダーを次のように定義します。

Authorization: Basic skdjflsdkfj=

IAuthProvider 実装は、ユーザー ストアに対して検証し、セッション トークンを応答本文 (JSON) として返します。

http://localhost/json/reply/ordersクライアントはこのトークンを使用し、次のようなAuthorization ヘッダーを使用するなど、後続のリクエストに対して再送信します。

Authorization: BasicToken <TokenFromPreviousSuccessfulLogin>

を使用して、AuthenticateAttribute認証を使用するようにサービスにフラグを立てたいと考えています。

後続のリクエストのトークンの検証をどのように実装すればよいですか? IAuthProviderトークンを提供するには、どのように実装すればよいですか? プロバイダーなどを登録するにはどうすればよいですか? RequestFilters を使用するか、 AuthFeature?

4

1 に答える 1

7

ServiceStack のJWT AuthProviderAPI Key AuthProviderはどちらもトークン ベースの認証を使用します。

それ以外の場合、BasicAuth プロバイダーは、BasicAuth ヘッダーから UserName と Password を単純に抽出して評価する非常に単純なクラスです。

public override object Authenticate(...)
{
    var httpReq = authService.RequestContext.Get<IHttpRequest>();
    var basicAuth = httpReq.GetBasicAuthUserAndPassword();
    if (basicAuth == null)
        throw HttpError.Unauthorized("Invalid BasicAuth credentials");

    var userName = basicAuth.Value.Key;
    var password = basicAuth.Value.Value;

    return Authenticate(authService, session, userName, password, request.Continue);
}

強化された動作を提供したい場合は、Authorization: BasicTokenヘッダーのこのクラス チェックを継承するだけです。ヘッダーが存在する場合は、それを使用してbase.Authenticate(...)メソッドを呼び出し、最初の検証を実行します。

于 2013-05-21T16:28:20.293 に答える