2016-11-03 5 views
1

Ich baue eine Rest Api mit SpringBoot und die Authentifizierung, die ich mit Firebase implementiert.SpringBoot Rest API benutzerdefinierte Authentifizierung

Mein Problem ist jetzt, dass ich Kontrolle über die Client-Anwendungen haben möchte, die auf meine Anwendung zugreifen. Das Problem bei der Verwendung von SpringSecurity ist, dass ich, soweit ich weiß, die Authentifizierung dafür durchführen muss und ich möchte nur "die Client-Anwendung zulassen".

Hat jemand eine Idee, wie zu tun?

+0

Meinen Sie, dass Sie die Authentifizierung für eine bestimmte Gruppe von Clients nicht durchführen möchten? – Yasin

+0

Nicht. Alle Clients müssen authentifiziert sein, aber diese Aufgabe wird die Firebase sein. Auf meinem Server werde ich nur überprüfen, ob die Anwendung berechtigt ist, auf den Server zuzugreifen. Mein Problem ist genau die Anwendung zu überprüfen. –

Antwort

0

Geben Sie Ihrem Client einen eindeutigen Schlüssel. Welche Ihr Microservice erkennt und authentifiziert jede Anfrage basierend auf diesem Schlüssel. Dies kann auch als request parameter angegeben werden.

Nehmen wir an, Sie fügen Ihren Schlüssel in einen Parameter namens my-key, jetzt vor der Arbeit an Ihrer Logik in Ihrem Spring-Boot-App validieren Sie Ihren Schlüssel. so -

Ihre Ruhe-Controller würde aussehen wie this-

@RestController 
class MyRest{ 

    private static final String KEY = "someValue"; 

    @RequestMapping("/some-mapping") 
    public @ResponseBody myMethod(@RequestParam(value="my-key", required=true) String key){ 
     if(!validateRequest(key)){ 
      //return error as response 
     } 
     System.out.println("Key Validation Successful!"); 
     //here goes your logic 
    } 

    private boolean validateRequest(String key){ 
     return key.equals(KEY); 
    } 
} 

, um diesen Rest Nutzung zuzugreifen - http://your-host:port/some-mapping?my-key=someValue

+0

Aber wo und wie würde ich das tun, überprüfen Sie den Schlüssel im Frühjahr? –

+0

aktualisierte Antwort mit Beispiel :) –

+1

Auf diese Weise kann jeder auf die APIs zugreifen. Ein besserer Weg wäre, die Daten im POST zu senden. Wenn jedoch der Client den "Schlüssel" senden kann, kann er leicht den normalen Authentifizierungsmechanismus verwenden. – Yasin

0

Wenn Sie einige der Kunden ermöglichen, wollen die Authentifizierung zu umgehen, haben eine Liste der Whitelist-IP-Adressen und überprüfen Sie die IP jeder eingehenden Anfrage. Wenn sich die IP in der Liste der Whitelist-APIs befindet, ist keine Authentifizierung erforderlich.

Verwenden Sie HttpServletRequest.getRemoteAddr(), um die IP-Adresse abzurufen.

Verwandte Themen