when try to implement @Erel's basicauthentication:
	
	
		
			
			
				
					
						
							 www.b4x.com
						
					
					www.b4x.com
				
			
		
	
	
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
in module BacisAuthenticationFilter:
	
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
but when execute, there are errors:
	
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
what's wrong with it? 
Thanks!
			
			jServer authentication
I'm creating web service using jServer. The clients connecting to this WS will use jOkHttp library. I would like to set basic authentication for this connections.  I can set username and password on the client side, but how to set in on the server side?
				 www.b4x.com
						
					
					www.b4x.com
				
			
				B4X:
			
		
		
		Sub AppStart (Args() As String)
    srv.Initialize("server")
    srv.Port = 51042
    srv.AddFilter("/*", "BasicAuthenticationFilter", False)
    srv.AddHandler("/test/*", "testHandler", False)
    srv.Startin module BacisAuthenticationFilter:
			
				B4X:
			
		
		
		Sub Process_Globals
    
End Sub
'Return True to allow the request to proceed.
Public Sub Filter(req As ServletRequest, resp As ServletResponse) As Boolean
    If req.GetSession.GetAttribute2("logged in", False) = True Then Return True
    Dim auths As List = req.GetHeaders("Authorization")
    If auths.Size = 0 Then
        resp.SetHeader("WWW-Authenticate", $"Basic realm="Realm""$)
        resp.SendError(401, "authentication required")
        Return False
    Else
        If CheckCredentials(auths.Get(0)) Then
            req.GetSession.SetAttribute("logged in", True)
            Return True
        Else
            resp.SendError(401, "authentication required")
            Return False
        End If
    End If
End Sub
Private Sub CheckCredentials (auth As String) As Boolean
    Dim success As Boolean = False
    If auth.StartsWith("Basic") = True Then
        Dim b64 As String = auth.SubString("Basic ".Length)
        Dim su As StringUtils
        Dim b() As Byte = su.DecodeBase64(b64)
        Dim raw As String = BytesToString(b, 0, b.Length, "utf8")
        Dim UsernameAndPassword() As String = Regex.Split(":", raw)
        If UsernameAndPassword.Length = 2 Then
            'up to you to decide which credentials are allowed <---------------------------
            If UsernameAndPassword(0) = "Username" And UsernameAndPassword(1) = "Password" Then
                success = True
            End If
        End If
    End If
    Return success
End Sub
			
				B4X:
			
		
		
		Waiting for debugger to connect...
Program started.
2022-01-06 15:33:21.274:INFO::main: Logging initialized @751ms to org.eclipse.jetty.util.log.StdErrLog
Error occurred on line: 21 (Main)
java.lang.NoSuchMethodException: MY.B4J.Server02.basicauthenticationfilter.innerInitializeHelper(anywheresoftware.b4a.BA)
    at java.base/java.lang.Class.getDeclaredMethod(Class.java:2476)
    at anywheresoftware.b4j.object.JServlet.getInitializeMethod(JServlet.java:56)
    at anywheresoftware.b4j.object.JServlet.<init>(JServlet.java:48)
    at anywheresoftware.b4j.object.ServerWrapper.Start(ServerWrapper.java:181)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at anywheresoftware.b4a.shell.Shell.runVoidMethod(Shell.java:673)
    at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:240)
    at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:167)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at anywheresoftware.b4a.BA.raiseEvent2(BA.java:109)
    at anywheresoftware.b4a.shell.ShellBA.raiseEvent2(ShellBA.java:98)
    at anywheresoftware.b4a.BA.raiseEvent(BA.java:96)
    at MY.B4J.Server02.main.main(main.java:29)Thanks!
 
				 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		