1

独自の認証を作成しようとしているので、Authenticate メソッドを継承CredentialsAuthProviderしてオーバーライドしました。認証は正常に機能しています。別のサービスを呼び出すと、セッションに保存したすべてのデータが表示されます。

問題は次のとおりです。認証属性を追加してクライアントから呼び出そうとすると、要求された役割を使用したい場合でも、承認されていない例外がスローされます。

認証サービスは次のとおりです。

public class CustomCredentialsAuthProvider : CredentialsAuthProvider
{
    public override bool TryAuthenticate(IServiceBase authService, string userName, string password)
    {
        return true;
    }

    public override object Authenticate(IServiceBase authService, IAuthSession session, Auth request)
    {

        session.FirstName = "Name";
        //...
        session.Authenticate = true;
        session.UserName = request.UserName;
        session.Roles = new List<string>;
        session.Roles.Add("admin")
        //....
        authService.SaveSession(session, SessionExpiry);

        // Return custom object
        return new UserAuthResponse { SessionId = session.Id ......};

    }

AppHost は次のとおりです。

public override void Configure(Container container)
{
    Plugins.Add(new AuthFeature(() => new AuthUserSession(), new IAuthProvider[] {
            new CustomCredentialsAuthProvider()
        }));
    Plugins.Add(new RegistrationFeature());

    container.Register<ICacheClient>(new MemoryCacheClient());
    var userRep = new InMemoryAuthRepository();
    container.Register<IUserAuthRepository>(userRep);


}

およびテスト サービス:

[Authenticate]
public class TestService : Service { 
    public object Any(UserRequest request) {

       return new UserResponse{Name = request.Name};
    }
}

これは実際のコードではないので、構文ミスは申し訳ありません!)))) しかし、考え方は同じです! 何が問題なのか教えてください。テスト サービスを呼び出したときに Unauthorized 例外が発生したのはなぜですか??????????

4

1 に答える 1

2

この問題が発生したとき[CustomAuthenticate]、この要点からのガイダンスに従ってカスタム認証属性を作成する必要がありました-> https://gist.github.com/joeriks/4518393

AuthenticateIfBasicAuth メソッドで、BasicAuthProvider.Name の代わりに MyAuthProvider.Name を使用するようにプロバイダーを設定しました。

それで、

[CustomAuthenticate]
public class TestService : Service { 
    public object Any(UserRequest request) {

       return new UserResponse{Name = request.Name};
    }
}

参照: http://joeriks.com/2013/01/12/cors-basicauth-on-servicestack-with-custom-authentication/

于 2013-08-04T22:51:46.323 に答える