Authentifizierung fuer Modul jdk.httpserver
ulrich
2021-06-02 9ee35756bb044f585a62b737a8bbacba090383e2
commit | author | age
9ee357 1 /*
U 2   jwtTest - JSON Web Token Testimplementierung 
3   Copyright (C) 2021  Ulrich Hilger
4
5   This program is free software: you can redistribute it and/or modify
6   it under the terms of the GNU Affero General Public License as
7   published by the Free Software Foundation, either version 3 of the
8   License, or (at your option) any later version.
9
10   This program is distributed in the hope that it will be useful,
11   but WITHOUT ANY WARRANTY; without even the implied warranty of
12   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   GNU Affero General Public License for more details.
14
15   You should have received a copy of the GNU Affero General Public License
16   along with this program.  If not, see <https://www.gnu.org/licenses/>.
17  */
18 package de.uhilger.httpserver.auth.handler;
19
20 import com.google.gson.Gson;
21 import com.sun.net.httpserver.Authenticator;
22 import com.sun.net.httpserver.HttpExchange;
23 import de.uhilger.httpserver.auth.ApiAuthenticator;
24 import de.uhilger.httpserver.auth.realm.User;
25 import de.uhilger.httpserver.base.handler.HttpResponder;
26 import java.io.IOException;
27 import java.util.logging.Logger;
28
29 /**
30  *
31  * @author Ulrich Hilger
32  * @version 1, 30.05.2021
33  */
34 public class ApiLoginHandler extends LoginHandler {
35
36   private static final Logger logger = Logger.getLogger(ApiLoginHandler.class.getName());
37   
38   public ApiLoginHandler() {
39     //this.ctx = ctx;
40   }
41
42   @Override
43   protected void loginResponse(HttpExchange exchange, Authenticator auth, String token) throws IOException {
44     if(auth instanceof ApiAuthenticator) {
45       setAuthenticatedHeader(exchange, auth, token);
46       logger.info("response ok");      
47       HttpResponder responder = new HttpResponder();
48       responder.antwortSenden(exchange, 200, "ok");
49     } else {
50       throw new IOException("Wrong authenticator type, should have been ApiAuthenticator.");
51     }
52   }
53
54   @Override
55   protected User getUser(HttpExchange exchange) throws IOException {
56     /*
57     Wenn ein JSON-Inhalt im Body uebermittelt wird, steht
58     dort evtl. etwas wie
59     {"name": "fred", "password": "secret"}
60     das kann wie folgt gelesen werden
61      */
62     String body = bodyLesen(exchange);
63     Gson gson = new Gson();
64     User user = gson.fromJson(body, User.class);
65     return user;
66   }
67   
68 }