Authentifizierung fuer Modul jdk.httpserver
ulrich
2021-06-03 fc54b843e4c5736bf416b900db79ea1440cbee96
Encoder Tests
2 files modified
1 files added
59 ■■■■■ changed files
src/de/uhilger/httpserver/auth/TokenAuthenticator.java 1 ●●●● patch | view | raw | blame | history
src/de/uhilger/httpserver/auth/realm/Encoder.java 34 ●●●●● patch | view | raw | blame | history
src/de/uhilger/httpserver/auth/realm/SimpleRealm.java 24 ●●●● patch | view | raw | blame | history
src/de/uhilger/httpserver/auth/TokenAuthenticator.java
@@ -38,7 +38,6 @@
import java.util.logging.Level;
import java.util.logging.Logger;
import de.uhilger.httpserver.auth.realm.Realm;
import de.uhilger.httpserver.auth.realm.User;
import de.uhilger.httpserver.auth.session.SweepThread;
import io.jsonwebtoken.JwtException;
src/de/uhilger/httpserver/auth/realm/Encoder.java
New file
@@ -0,0 +1,34 @@
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package de.uhilger.httpserver.auth.realm;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
 *
 * @author ulrich
 */
public class Encoder {
  private static final byte[] HEX_ARRAY = "0123456789ABCDEF".getBytes(StandardCharsets.US_ASCII);
  public byte[] encode(String password) throws NoSuchAlgorithmException {
    MessageDigest md = MessageDigest.getInstance("SHA-256");
    return md.digest(password.getBytes());
  }
  public String bytesToHex(byte[] bytes) {
      byte[] hexChars = new byte[bytes.length * 2];
      for (int j = 0; j < bytes.length; j++) {
          int v = bytes[j] & 0xFF;
          hexChars[j * 2] = HEX_ARRAY[v >>> 4];
          hexChars[j * 2 + 1] = HEX_ARRAY[v & 0x0F];
      }
      return new String(hexChars, StandardCharsets.UTF_8);
  }
}
src/de/uhilger/httpserver/auth/realm/SimpleRealm.java
@@ -9,22 +9,31 @@
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.spec.InvalidKeySpecException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.crypto.BadPaddingException;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
/**
 *
 *   test=testRolle
 *   ulrich=testRolle,andereRolle
 * test=test,testRolle
 * ulrich=ulrich,testRolle,andereRolle
 * 
 * @author Ulrich Hilger
 * @version 1, 03.06.2021
 */
public class SimpleRealm implements Realm {
  private static final Logger logger = Logger.getLogger(SimpleRealm.class.getName());
  
  public static final String LIST_INDICATOR = "=";
  public static final String ROLE_SEPARATOR = ",";
@@ -61,6 +70,13 @@
      User user = new User();
      user.setName(userId);
      user.setPassword(rollen[0]);
      try {
        Encoder encoder = new Encoder();
        String hex = encoder.bytesToHex(encoder.encode(rollen[0]));
        logger.fine(hex);
      } catch (NoSuchAlgorithmException ex) {
        logger.log(Level.SEVERE, null, ex);
      }
      ArrayList rollenListe = new ArrayList(); 
      for(int i = 1; i < rollen.length; i++) {
        rollenListe.add(rollen[i]);