Ich verwende JMeter, der von JDK 1.8
Krb5LoginModule
abhängt.Java-Client und Kerberos/SSO - Krb5LoginModule - Tickets nicht wiederverwenden
Es scheint mir, dass die Krb5LoginModule
eine Kerberos-Sitzung über mehrere Anfragen nicht verwalten kann. Dies führt zu einem HTTP 401
und erneutem Handshaking vor jeder Anfrage.
Ich versuche eine Produktionsumgebung zu reproduzieren, die schwerwiegende intermittierende Leistungsprobleme hat, und ich möchte die Kerberos/SSO-Authentifizierung in meine Tests aufnehmen, aber ich kann nicht wie die Windows-Clients, die meine verwenden REST-Server.
Der REST-Server stellt Daten für Hunderte von Excel-Add-In-Clients zur Verfügung, die für die Authentifizierung mit Kerberos eingerichtet sind. In den Zugriffsprotokollen sehe ich, dass jeder Client zunächst eine HTTP-Statusantwort von 401 auslöst, gefolgt von einer 200 und weiteren 200 für die Dauer der Clientaktivität.
Um Verwirrung zu vermeiden, verarbeitet der Server Kerberos Hand-Shaking und ist NICHT mit Servlet-Container-Sitzungen.
Wenn mein Test ausgeführt wird, sehe ich, dass jede Anfrage von einem 401 vom Server abgelehnt wird, Java geht zum Kerberos KDC, um ein anderes Ticket zu erhalten, und sendet es dann erneut. Während dies funktioniert, kann mein KDC-Server nicht mehr als ein paar Anfragen pro Sekunde verarbeiten und die Anfragen zeitweise abbrechen, so dass ich meinen Belastungstest nicht sehr hochfahren kann.
Warum behält Krb5LoginModule nicht das Kerberos-Ticket, das es vom KDC erhält, und die Vorabauthentifizierung für jeden Aufruf, wie Excel?
Dies ist, was ich für die Config versucht haben:
JMeter {
com.sun.security.auth.module.Krb5LoginModule required
useTicketCache=true
ticketCache="FILE:krb.cache"
useKeyTab=true
keyTab="FILE:krb.keytab"
storeKey=true
principal="[email protected]"
debug=true;
};
Ich habe mit keytabs versucht und ohne, mit Ticket-Caching und ohne. Ich hoffe, ich mache nur die Konfiguration falsch, aber ich kann nicht sehen, wie.
Dies ist, was ich meine Vermutung bin stützen auf: Oracle: Single sign-on using Kerberos
und die API: Krb5LoginModule - Oracle JDK 1.8 API docs
„... liefern Daten, um Hunderte von Excel-Add-in-Clients, die mit Kerberos eingerichtet sind zu authentifizieren ..“ - wenn die Kunden ihre Verbindung zu schließen und auf eine neue Anforderung der Kunden bieten nicht die Autorisierungsheader Es fängt von vorne an. Die Kunden müssen die Verbindung cachen und/oder die Verbindung offen zu halten. Ich habe das schlechte Gefühl, dass JMeter die Verbindung nach jeder Anfrage schließt – gusto2
Dies ist auf Linux. Was wäre die entsprechende Konfiguration für diese Registrierungseinstellung? "Dem Zielsitzungsschlüssel erlauben", was zu tun? – Adam
@ gusto2 sicher halten die Verbindung lebendig oder schließen es ist irrelevant, es ist die Kopfzeile mit der Auth-Ticket, das ist wichtig. Krb5LoginModule stellt es nur bei der ersten Anfrage nach dem 401 bereit, und beim nächsten Mal vergisst es es wieder. Ich denke, ich könnte Keep-Alive in JMeter verwenden, aber dann werde ich die Prod-Umgebung nicht wirklich replizieren. – Adam