Hey Felix,

you are indeed right! Got it working now. Needed to flip the URL in
krb5 to the Domain Controller and switch off the default_tkt_enctypes
and default_tgs_enctypes

How do I stop anwsering in top-post style? Sorry, no idea what I
should do differently, I just hit reply in gmail.



On Fri, Jan 16, 2015 at 12:59 PM, Felix Schumacher
<[email protected]> wrote:
>
> Am 16.01.2015 10:49, schrieb Martijn de Vrieze:
>>
>> Hey Felix,
>>
>> thanks for the help so far :)
>> BTW, does it make a difference that I am working from a 64b Linux box?
>> Although when within the domain, on a windows (citrix) box I get the same
>> errors.
>
> I do my testing from linux, so I am sure, that linux works.
>
>>
>> I started off initially trying it over 88, which gives the exact same
>> time-out.
>
> Then maybe not only the port is wrong, but the dns name also? The kdc is not 
> the website server you are trying to connect to, but the key distribution 
> center, that is the kerberos server.
>
>>
>> When I asked the implementation partner they claimed it should just run
>> over 443, but than again, what do they know :)
>
> If they tell you it is 443, they probably mean the webserver, which is most 
> likely not the kdc.
>
>>
>> One thing I have noticed so far, is that the request headers contain
>> nothing towards auth types:
>
> That is OK, since you have no TGT or service ticket and if it is the first 
> request no knowlegde, that the server is willing to speak SPNEGO.
>
>
>>
>>
>> Request Headers:
>> Connection: keep-alive
>> User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64;
>> Trident/6.0)
>> Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
>> Accept-Language: en-US,en;q=0.5
>> Accept-Encoding: gzip, deflate
>> Pragma: no-cache
>> Cache-Control: no-cache
>> Host: tst-crm20.veh.nl
>>
>> Whereas the response header does tell me the www-auth => negotiate
>>
>> Thread Name: Jmeter 1-1
>> Sample Start: 2015-01-16 10:36:01 CET
>> Load time: 90209
>> Latency: 90208
>> Size in bytes: 485
>> Headers size in bytes: 425
>> Body size in bytes: 60
>> Sample Count: 1
>> Error Count: 1
>> Response code: 401
>> Response message: Unauthorized
>>
>> Response headers:
>> HTTP/1.1 401 Unauthorized
>> Cache-Control: private
>> Transfer-Encoding: chunked
>> Content-Type: text/plain
>> Server: Microsoft-IIS/8.5
>> X-AspNet-Version: 4.0.30319
>> REQ_ID: e73cba80-97e4-4444-a201-a50ab6957a31
>> Set-Cookie: ReqClientId=51c362af-23e0-4dad-a299-10e6bf67c310; expires=Fri,
>> 16-Jan-2065 09:37:31 GMT; path=/; secure; HttpOnly
>> WWW-Authenticate: Negotiate
>
> This is good, as it means that the server is willing to speak SPNEGO with you.
>
>> X-Powered-By: ASP.NET
>> Date: Fri, 16 Jan 2015 09:37:31 GMT
>>
>>
>> HTTPSampleResult fields:
>> ContentType: text/plain
>> DataEncoding: null
>>
>>
>>
>> Also, Tried connecting straight through Java and that worked like a charm.
>>
>> Code is somewhat like this:
>>
>> public class NTLM_ping {
>>     public NTLM_ping(){
>>         super();
>>     }
>>
>>     public static void main(String[]args) throws Exception {
>>
>>         DefaultHttpClient httpClient = new DefaultHttpClient();
>>         httpClient.getAuthSchemes().register("ntlm",new
>> NTLMSchemeFactory());
>
> That is great, but you are not using kerberos here.
>
> This is NTLM, which you could use with jmeter, too. I believe you have to 
> fill in the domain and
> realm columns and use BASIC_DIGEST instead of Kerberos.
>
> But keep in mind, that kerberos is cooler and probably more secure.
>
>>
>>         // add credentials
>>
>>         httpClient.getCredentialsProvider().setCredentials(
>>                 new AuthScope("TEST", -1),
>>                 new NTCredentials("m.devrieze","PassWord","tst-crm20.test.nl
>> ","TEST"));
>>
>>         HttpGet httpGet = new HttpGet("http://tst-crm20.test.nl";);
>>
>>         // ignore cookies
>>         /*httpGet.getParams().setParameter("http.protocol.cookie-policy",
>>                 CookiePolicy.ACCEPT_ALL);
>>         */
>>         try{
>>             // execute the GET
>>             HttpResponse status = httpClient.execute(httpGet);
>>             System.out.println(status.getProtocolVersion());
>>             System.out.println(status.getStatusLine().getStatusCode());
>>             System.out.println(status.getStatusLine().getReasonPhrase());
>>             System.out.println(status.getStatusLine().toString());
>>         }finally {
>>             // release any sources
>>         }
>>
> And by the way, could you stop answering in top-post style?
>
> Regards
>  Felix
>
>
>>
>>
>>
>> On Fri, Jan 16, 2015 at 10:21 AM, Felix Schumacher <
>> [email protected]> wrote:
>>
>>> Am 16.01.2015 09:58, schrieb Martijn de Vrieze:
>>>
>>>> krb5.conf
>>>>
>>>> [libdefaults]
>>>> default_realm = TEST.NL
>>>> default_tkt_enctypes = aes256-cts-hmac-sha1-96,aes128-cts-hmac-sha1-96
>>>> default_tgs_enctypes = aes256-cts-hmac-sha1-96,aes128-cts-hmac-sha1-96
>>>> forwardable=true
>>>>
>>>> [realms]
>>>> TEST.NL = {
>>>>         kdc = tst-crm20.test.nl:443
>>>>
>>> This is a strange port for a kdc. I would expect it to listen on 88.
>>>
>>>  }
>>>>
>>>>
>>>> [domain_realm]
>>>> test.nl= TEST.NL
>>>> .test.nl= TEST.NL
>>>>
>>>> [appdefaults]
>>>>  pam = {
>>>>    debug = false
>>>>    ticket_lifetime = 36000
>>>>    renew_lifetime = 36000
>>>>    forwardable = true
>>>>    krb4_convert = false
>>>>  }
>>>>
>>>> jaas.conf
>>>>
>>>>
>>>> JMeter {
>>>>     com.sun.security.auth.module.Krb5LoginModule required
>>>>     doNotPrompt=false
>>>>     useKeyTab=false
>>>>     storeKey=false;
>>>> };
>>>>
>>>> On rerunning I recieved the following error (which I have not seen before:
>>>> 2015/01/16 09:57:52 WARN  -
>>>> org.apache.http.client.protocol.RequestTargetAuthentication: NEGOTIATE
>>>> authentication error: No valid credentials provided (Mechanism level: No
>>>> valid credentials provided (Mechanism level: Failed to find any Kerberos
>>>> tgt))
>>>>
>>> That is probably because you don't connect to the right port and noone
>>> responds to you. Try another kdc port.
>>>
>>> Regards
>>>  Felix
>>>
>>>>
>>>> *Martijn de Vrieze*
>>>>
>>>>
>>>>
>>>> Phone: +31618707784 | Skype: martijndevrieze | gtalk:
>>>> [email protected] | Twitter:
>>>> http://www.twitter.com/martijndevrieze | Linkedin:
>>>> http://www.linkedin.com/in/martijndevrieze | Home:
>>>> http://www.martijndevrieze.nl
>>>>
>>>> On Fri, Jan 16, 2015 at 9:01 AM, Felix Schumacher <
>>>> [email protected]> wrote:
>>>>
>>>>  Am 15.01.2015 22:48, schrieb Martijn de Vrieze:
>>>>>
>>>>>
>>>>>  I have been struggling somewhat with JMeter and kerberos lately. Google
>>>>> so
>>>>>
>>>>>> far has not been able to help me out with the issue I am facing.
>>>>>>
>>>>>> The system under test is a Microsoft CRM 2013 platform, up until a few
>>>>>> days
>>>>>> ago my tests worked fine since basic auth was switched on. However on
>>>>>> the
>>>>>> most recent drop with changes they also switched over to kerberos auth
>>>>>> only.
>>>>>>
>>>>>> I have:
>>>>>>  * filled in the KRB5.CONF with all relevant information
>>>>>>  * HTTP AUTH Manager in the script with base URL, username, password,
>>>>>> domain and KERBEROS filled in
>>>>>> * HTTP Request defaults to ensure and enforce HTTP4 use, HTTPS over port
>>>>>> 443 and the same base URL all over the place
>>>>>>
>>>>>> However I cannot get it to work properly, logging in simply refuses to
>>>>>> work
>>>>>> for me. I'd really appreciate some help here, I use Jmeter fairly often,
>>>>>> with this I am however completely stuck.
>>>>>>
>>>>>> When running the first step, which instantly receives the KERBEROS ath
>>>>>> request I get the following in my logs:
>>>>>>
>>>>>> 2015/01/15 17:13:02 INFO  - jmeter.threads.JMeterThread: Thread started:
>>>>>> Jmeter 1-1
>>>>>> 2015/01/15 17:13:02 INFO  - jmeter.services.FileServer: Stored:
>>>>>> users.csv
>>>>>> 2015/01/15 17:13:02 DEBUG - jmeter.protocol.http.control.CacheManager:
>>>>>> GET(OAH) http://tst-crm20.test.nl/TEST/main.aspx null
>>>>>> 2015/01/15 17:13:02 DEBUG - jmeter.protocol.http.control.
>>>>>> HC4CookieHandler:
>>>>>> Found 0 cookies for http://tst-crm20.test.nl/TEST/main.aspx
>>>>>> 2015/01/15 17:13:02 DEBUG - jmeter.protocol.http.control.CacheManager:
>>>>>> inCache http://tst-crm20.test.nl/TEST/main.aspx null
>>>>>> 2015/01/15 17:13:02 DEBUG - jmeter.protocol.http.control.AuthManager:
>>>>>> Target URL strings to match against: http://tst-crm20.test.nl/TEST/
>>>>>> main.aspx
>>>>>>  and http://tst-crm20.test.nl:80/TEST/main.aspx
>>>>>> <http://tst-crm20.test.nl/TEST/main.aspx>
>>>>>> 2015/01/15 17:13:02 DEBUG - jmeter.protocol.http.control.AuthManager:
>>>>>> Checking match against auth'n entry: http://tst-crm20.test.nl
>>>>>> 2015/01/15 17:13:02 DEBUG - jmeter.protocol.http.control.AuthManager:
>>>>>> Matched
>>>>>> 2015/01/15 17:13:02 DEBUG - jmeter.protocol.http.control.AuthManager:
>>>>>> Target URL strings to match against: http://tst-crm20.test.nl/TEST/
>>>>>> main.aspx
>>>>>>  and http://tst-crm20.test.nl:80/TEST/main.aspx
>>>>>> <http://tst-crm20.test.nl/TEST/main.aspx>
>>>>>> 2015/01/15 17:13:02 DEBUG - jmeter.protocol.http.control.AuthManager:
>>>>>> Checking match against auth'n entry: http://tst-crm20.test.nl
>>>>>> 2015/01/15 17:13:02 DEBUG - jmeter.protocol.http.control.AuthManager:
>>>>>> Matched
>>>>>> 2015/01/15 17:13:02 DEBUG - jmeter.protocol.http.control.AuthManager:
>>>>>> m.devrieze > D=TEST R= M=KERBEROS
>>>>>> 2015/01/15 17:13:02 DEBUG - jmeter.protocol.http.control.CacheManager:
>>>>>> GET(OAH) http://tst-crm20.test.nl/TEST/main.aspx null
>>>>>> 2015/01/15 17:13:02 DEBUG - jmeter.protocol.http.control.
>>>>>> HC4CookieHandler:
>>>>>> Found 0 cookies for http://tst-crm20.test.nl/TEST/main.aspx
>>>>>> 2015/01/15 17:13:02 DEBUG - jmeter.protocol.http.control.CacheManager:
>>>>>> inCache http://tst-crm20.test.nl/TEST/main.aspx null
>>>>>> 2015/01/15 17:13:02 DEBUG - jmeter.protocol.http.control.AuthManager:
>>>>>> Target URL strings to match against: http://tst-crm20.test.nl/TEST/
>>>>>> main.aspx
>>>>>>  and http://tst-crm20.test.nl:80/TEST/main.aspx
>>>>>> <http://tst-crm20.test.nl/TEST/main.aspx>
>>>>>> 2015/01/15 17:13:02 DEBUG - jmeter.protocol.http.control.AuthManager:
>>>>>> Checking match against auth'n entry: http://tst-crm20.test.nl
>>>>>> 2015/01/15 17:13:02 DEBUG - jmeter.protocol.http.control.AuthManager:
>>>>>> Matched
>>>>>> 2015/01/15 17:13:02 DEBUG - jmeter.protocol.http.control.
>>>>>> KerberosManager:
>>>>>> Subject cached:[] before:m.devrieze
>>>>>> 2015/01/15 17:14:32 WARN  - jmeter.protocol.http.control.
>>>>>> KerberosManager:
>>>>>> Could not log in user m.devrieze javax.security.auth.login.
>>>>>> LoginException:
>>>>>> Receive timed out
>>>>>>
>>>>>>  It seems, that the kerberos server did not answer the request for a
>>>>>
>>>>> service ticket (at least not within the default timeout of 30s).
>>>>> Could you rerun the test with the java system property
>>>>> "sun.security.krb5.debug" set to true?
>>>>>
>>>>> Could you post the contents of your krb5.conf and jaas.conf file?
>>>>>
>>>>> Regards
>>>>>  Felix
>>>>>
>>>>>
>>>>>> *Thanks! *
>>>>>>
>>>>>> *Martijn de Vrieze*
>>>>>>
>>>>>>

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to