2017-03-13 6 views
2

Web APIのサービススタックv.4.5.6.0を評価しています。クライアントが基本認証または認証情報を使用して認証できるようにしたいのですが、クライアントが基本認証ヘッダーを提供できないようにしたいJWTサービスを利用する際のJWTトークンまたはセッションクッキー。これはやや恣意的ですが、特定のプロバイダからルートを除外する方法や、ログインした後でトークン/クッキーの使用を強制的に認証する方法はありますか? APPHOSTから特定のルートの認証プロバイダを無効にすることはできますか?

認証の設定:

private void ConfigureAuth(Container container) 
{ 
    var appSettings = new AppSettings();    
    this.Plugins.Add(new AuthFeature(() => new CustomAuthUserSession(), 
     new IAuthProvider[] 
      { 
       new CredentialsAuthProvider(), 
       new BasicAuthProvider(), 
       new JwtAuthProvider(appSettings) 
      }) { IncludeAssignRoleServices = false, MaxLoginAttempts = 10}); 

    var userRepository = new CustomUserAuthRepository(container.TryResolve<IDbConnectionFactory>()); 
    container.Register<IAuthRepository>(userRepository); 

} 
+0

FYIは、ユーザーを認証するために使用されたAuthProviderを含む新しい 'session.AuthProvider'プロパティに関する更新された回答を参照してください。 – mythz

+0

ありがとう! FromTokenCookieは私が必要とするものに対してうまく機能しています。 – liz

答えて

1

ServiceStackは、あなたがあなたのサービスで認証させたいAuthProvidersかを決定することができますが、それはあなたが個別にどのアドホックAuthProvidersを設定することはできませんが、個々のサービスに適用されます。お気軽にadd this a feature requestにお問い合わせください。あなたはサービスのみ、JWTトークンによって移入されたセッションを示しFromTokenためにあなたのサービスのチェックを追加することができますJWTを介してアクセスされることを確実にしたいしかし場合

例:V4から

[Authenticate] 
public class MyServices : Service 
{ 
    public object Any(MyRequest request) 
    { 
     var session = base.SessionAs<AuthUserSession>(); 
     if (!session.FromToken) 
      throw HttpError.Unauthorized("Requires JWT Authentication"); 

     //... 
    } 
} 

public object Any(MyRequest request) 
{ 
    var session = base.SessionAs<AuthUserSession>(); 
    if (session.AuthProvider != JwtAuthProvider.Name) 
     throw HttpError.Unauthorized("Requires JWT Authentication"); 

    //... 
} 

はのためのドキュメントを参照してください.5.7それはあなたにも例えば、AuthProviderがユーザーを認証するために使用されたかを示す新しいsession.AuthProviderプロパティを使用することができますavailable on MyGet今です210。

関連する問題