Jetty 12.0.x SPNEGO: ਸੇਵਾ ਦਾ ਨਾਂ ਸੈੱਟ ਕਰੋ, ਪੂਰਾ principal ਨਹੀਂ
Jetty 12 ਪ੍ਰਮਾਣਿਕਤਾ ਸੰਰਚਿਤ ਕਰਦੇ ਸਮੇਂ proxy URI, JAAS ਵਰਤੋਂਕਾਰ ਅਤੇ GSS ਸੇਵਾ ਭਾਗ ਨੂੰ ਵੱਖ ਰੱਖੋ।
Jetty SPNEGO ਸੰਰਚਨਾ ਵਿੱਚ ਤਿੰਨ ਨਾਂ ਹੁੰਦੇ ਹਨ: ਪ੍ਰਮਾਣਿਕਤਾ ਮਿਲਾਉਣ ਲਈ ਵਰਤਿਆ URI, JAAS ਰਾਹੀਂ ਲੌਗਇਨ ਕਰਨ ਵਾਲਾ ਵਰਤੋਂਕਾਰ ਅਤੇ ਜਿਸ ਸੇਵਾ ਲਈ ਟਿਕਟ ਮੰਗੀ ਜਾਂਦੀ ਹੈ। ਇਹਨਾਂ ਦੇ ਮਕਸਦ ਵੱਖਰੇ ਹਨ।
Jetty 12.0.x ਲਾਗੂ ਕਰਨ ਲਈ, ਪ੍ਰਮਾਣਿਕਤਾ-ਆਬਜੈਕਟ ਦਾ ਇੱਕ ਹਿੱਸਾ ਇਸ ਤਰ੍ਹਾਂ ਹੈ:
var auth = new org.eclipse.jetty.client.SPNEGOAuthentication(
java.net.URI.create("http://proxy.example:8080"));
auth.setServiceName("HTTP");ਇਹ ਹਿੱਸਾ ਸੇਵਾ ਭਾਗ ਦਰਸਾਉਂਦਾ ਹੈ, ਪੂਰੀ proxy ਪ੍ਰਮਾਣਿਕਤਾ ਦੀ ਵਿਧੀ ਨਹੀਂ। JAAS ਲੌਗਇਨ, proxy ਰਾਊਟਿੰਗ ਅਤੇ ਬੇਨਤੀ ਦਾ ਪ੍ਰਮਾਣਿਕਤਾ ਵਟਾਂਦਰਾ ਵੱਖਰੇ ਹੀ ਰਹਿੰਦੇ ਹਨ।
ਇਸ ਲਾਗੂ ਕਰਨ ਵਿੱਚ Jetty getServiceName(), @ ਅੱਖਰ ਅਤੇ ਪ੍ਰਮਾਣਿਕਤਾ ਵਟਾਂਦਰੇ ਦੇ ਹੋਸਟ ਨੂੰ ਮਿਲਾ ਕੇ GSS ਹੋਸਟ-ਆਧਾਰਿਤ ਨਾਂ ਬਣਾਉਂਦਾ ਹੈ। [email protected] ਨੂੰ ਸੇਵਾ ਭਾਗ ਵਜੋਂ ਦੇਣ ਨਾਲ ਇੱਕ ਹੋਰ ਹੋਸਟ ਜੁੜ ਜਾਵੇਗਾ। ਇਸ setter ਦੇ ਪੂਰਾ Kerberos principal ਸਵੀਕਾਰ ਕਰਨ ਦੀ ਧਾਰਨਾ ਰੱਖਣ ਦੀ ਥਾਂ ਇਸ ਦਾ ਇਕਰਾਰਨਾਮਾ ਪੜ੍ਹੋ।
ਨਤੀਜਾ GSS ਨਾਂ ਦਾ ਸੰਕਲਪਿਕ ਰੂਪ HTTP@hostname ਹੈ। KDC ਦਾ ਸੰਬੰਧਿਤ ਸੇਵਾ principal ਆਮ ਤੌਰ 'ਤੇ HTTP/hostname ਵਜੋਂ ਦਰਸਾਇਆ ਜਾਂਦਾ ਹੈ। ਚੁਣਿਆ proxy ਨਾਂ ਅਸਲ ਵਿੱਚ ਰਜਿਸਟਰ ਹੋਈ ਸੇਵਾ ਨਾਲ ਮੇਲ ਖਾਣਾ ਚਾਹੀਦਾ ਹੈ ਉਸ ਖਾਤੇ ਲਈ; IP ਪਤਾ ਜਾਂ ਉਪਨਾਮ ਕੋਈ ਹੋਰ ਟਿਕਟ ਟਾਰਗੇਟ ਚੁਣ ਸਕਦਾ ਹੈ।
407 ਮਾਰਗ ਵੀ ਜਾਂਚੋ
Jetty 12.0.x ਵਿੱਚ authenticate() GSS ਹੋਸਟਨਾਂ request.getHost() ਤੋਂ ਲੈਂਦਾ ਹੈ ਅਤੇ ਡਿਫਾਲਟ Authorization ਹੈਡਰ ਨਾਲ ਨਤੀਜਾ ਬਣਾਉਂਦਾ ਹੈ। proxy URI ਨਾਲ ਪ੍ਰਮਾਣਿਕਤਾ ਆਬਜੈਕਟ ਮਿਲਾਉਣਾ ਆਪਣੇ ਆਪ ਉਹ ਚੋਣਾਂ proxy ਦੇ ਹੋਸਟਨਾਂ ਅਤੇ Proxy-Authorization ਵਿੱਚ ਨਹੀਂ ਬਦਲਦਾ।
ਇਸ ਲਈ proxy ਏਕੀਕਰਨ ਨੂੰ ਉਸ ਵਟਾਂਦਰੇ ਲਈ ਸਹੀ ਬੇਨਤੀ ਹੋਸਟ ਅਤੇ proxy-ਸੀਮਤ ਨਤੀਜਾ ਚਾਹੀਦਾ ਹੈ। HTTPS CONNECT ਬੇਨਤੀ ਅਤੇ ਆਮ ਮੂਲ ਬੇਨਤੀ ਦੇ ਹੋਸਟ ਮੁੱਲ ਵੱਖਰੇ ਹੋ ਸਕਦੇ ਹਨ। ਸੇਵਾ-ਨਾਂ setter ਪੂਰਾ 407 ਪ੍ਰਵਾਹ ਦਿੰਦਾ ਹੈ ਮੰਨਣ ਦੀ ਥਾਂ ਸਥਾਪਿਤ ਲਾਗੂ ਕਰਨ ਦਾ ਵਿਵਹਾਰ ਪੁਸ਼ਟੀ ਕਰੋ।
407 ਲਈ, ਉਸ ਬੇਨਤੀ ਵੱਲੋਂ ਵਰਤਿਆ proxy ਪ੍ਰਮਾਣਿਕਤਾ ਵਟਾਂਦਰਾ ਅਤੇ ਹੋਸਟ ਜਾਂਚੋ। 401 ਮੂਲ ਪ੍ਰਮਾਣਿਕਤਾ ਦਾ ਹੈ। ਸਿਰਫ਼ ਇੱਕ ਵੈਧ ਵਰਤੋਂਕਾਰ ਟਿਕਟ ਇਹ ਸਾਬਤ ਨਹੀਂ ਕਰਦੀ ਕਿ Jetty ਨੇ ਸਹੀ ਸੇਵਾ ਟਿਕਟ ਮੰਗੀ ਜਾਂ ਵਿਚੋਲੇ ਨੇ ਇਸਨੂੰ ਸਵੀਕਾਰ ਕੀਤਾ।