/ / Výzva na prihlásenie, Základné overenie - mólo, základné overenie, vložené mólo

Prihlásenie výzvy, základné overovanie - mólo, základná autentifikácia, embedded-jetty

Používam mólo 9, vložené.

Chcem poslať výzvu, keď v mojom súbore vlastností neexistuje používateľské meno.

Rozšíril som triedu BasicAuthenticator, aby som zachytil výnimku normálne vyvolanú, keď užívateľské meno neexistuje. Nevidím, ako potom po výzve používateľa znovu prihlásiť.

public class MyBasicAuthenticator extends BasicAuthenticator{
@Override
public Authentication validateRequest(ServletRequest req,
ServletResponse res, boolean mandatory)
{
Authentication authentication = null;
try{
authentication = super.validateRequest(req,res,mandatory);
return authentication;
}catch (Exception e){
return Authentication.SEND_FAILURE;
}
}

Autentifikácia.SEND_FAILURE zabraňuje volaniu nástroja ErrorHandler, ale načíta iba prázdnu stránku. SEND_FAILURE pochádza z rozhrania overovania.

javadoc: http://download.eclipse.org/jetty/stable-9/apidocs/org/eclipse/jetty/security/authentication/BasicAuthenticator.html

Podľa odpovede na túto otázku Jetty6 mal metódu odoslania výzvy, Jetty9 nemá. Jetty UserRealm presmeroval 3. neúspešné prihlásenie

odpovede:

0 pre odpoveď č. 1

Toto je problém základného overenia.

try {
authentication = super.validateRequest(req, res, mandatory);
} catch (Exception e) {
try{
HttpServletResponse r = (HttpServletResponse) res;
r.setHeader("WWW-Authenticate", "Basic");
r.setStatus(401);
} catch(Exception ew){}
authentication = Authentication.SEND_FAILURE;
}

Vráťte 401 a hlavičku http, ktorá obsahuje „WWW-Authenticate“: „Basic“

Autentifikácia.SEND_FAILURE zabráni výnimke ďalej v reťazi obsluhy.