ile HTTP özet kimlik doğrulaması Özetleme kimlik doğrulaması kullanarak makinemdeki Tomcat Web Sunucusu'na bağlanmaya çalışıyorum. Tomcat'in bellek alanını kullanıyorum.HttpUrlConnection
1) server.xml de: İşte sunucu yapılandırıldığı nasıl
<Realm className="org.apache.catalina.realm.MemoryRealm" digest="MD5" />
2) my web web.xml''deki olarak tomcat-users.xml
<user username="testuser" password="81dc9bdb52d04dc20036dbd8313ed055" roles="test"/>
3) ise proje:
<auth-method>DIGEST</auth-method>
ben bir özet yöntemi "MD5" olarak belirtilen ve ben Tom digest.sh kullanarak şifreyi encryped gelmiş görebileceğiniz gibi kedi. de benim istemci tarafı kod Tamam olduğunu düşünüyorum
private static void testGet() throws IOException {
// Create a URL
URL test = new URL("http://localhost:8080/TestWebProject/TestServlet");
// Open a connection to the URL
HttpURLConnection conn = (HttpURLConnection) test.openConnection();
MessageDigest md5 = null;
try {
md5 = MessageDigest.getInstance("MD5");
} catch(NoSuchAlgorithmException e) {
e.printStackTrace();
}
// Digest password using the MD5 algorithm
String password = "1234";
md5.update(password.getBytes());
String digestedPass = digest2HexString(md5.digest());
// Set header "Authorization"
String credentials = "testuser:" + digestedPass;
conn.setRequestProperty("Authorization", "Digest " + credentials);
// Print status code and message
System.out.println("Test HTTP GET method:");
System.out.println("Status code: " + conn.getResponseCode());
System.out.println("Message: " + conn.getResponseMessage());
System.out.println();
}
private static String digest2HexString(byte[] digest)
{
String digestString="";
int low, hi ;
for(int i=0; i < digest.length; i++)
{
low = (digest[i] & 0x0f) ;
hi = ((digest[i] & 0xf0)>>4) ;
digestString += Integer.toHexString(hi);
digestString += Integer.toHexString(low);
}
return digestString ;
}
ve sunucu konfigürasyonu:
İşte benim istemci tarafında koddur. Sunucu bana "Yetkisiz" mesajıyla durum kodu 401 göndermeye devam etmesine rağmen. Deneyimli bir java geliştiricisi olmadığımdan, benim uygulamamda herhangi birinin bir fikri olup olmadığı veya bir hata görüp görmediğini sormak istiyorum.
Teşekkürler!
Genellikle, HTTP kimlik destekleyen istemci web tarayıcısını kapatana kadar "Çıkış" olmadığı için, HTTPS bağlantısı ve bazı standart HTML tabanlı kimlik doğrulama formu kullanmak daha iyi olabilir. – Kel
Olası çoğaltılabilir [HttpURLConnection kullanarak Android'de özet kimlik doğrulaması] (http://stackoverflow.com/questions/32689185/digest-authentication-in-android-using-httpurlconnection) – ceph3us