GO-Zugriffstoken authentifizieren (Keycloak)
In modernen Netzwerkanwendungen ist Sicherheit von entscheidender Bedeutung. Um Benutzerdaten und Systemressourcen zu schützen, ist die Überprüfung von Zugriffstokens ein wesentlicher Schritt. Als leistungsstarke Lösung zur Identitätsauthentifizierung und Zugriffsverwaltung bietet Keycloak Entwicklern eine einfache und sichere Verifizierungsmethode. In diesem Artikel stellt der PHP-Editor Xigua vor, wie man Keycloak zur Überprüfung von Zugriffstokens verwendet, um die Anwendungssicherheit zu gewährleisten. Mit der Anleitung dieses Artikels können Sie die Überprüfung des Zugriffstokens einfach implementieren und sicherstellen, dass nur autorisierte Benutzer auf Ihre Anwendung zugreifen können.
Frageninhalt
Ich versuche, die Zugriffstoken-Verifizierung mit GO zu implementieren. Aber die Beispiele, die ich online gesehen habe, scheinen nur TOKEN_SECRET zu verwenden, um es zu validieren. Aber ich bin es gewohnt, in Java Spring zu programmieren und muss TOKEN_SECRET nicht verwenden. Ich stelle einfach die jwk-set-uri zur Verfügung und sie prüft auf Gültigkeit (automatische Sicherheitsfilter usw.) und ich weiß, dass sie mit dem OAuth-Server kommuniziert und diese Validierung durchführt.
Gibt es in Go keine Bibliothek, die durch eine Anfrage an den OAuth-Server prüfen kann, ob das Token gültig ist?
Ich weiß, dass ich dies manuell tun kann, indem ich eine Anfrage an den Benutzerinfo-Endpunkt des OAuth-Servers stelle:
http://localhost:8080/auth/realms/<your_realm>/protocol/openid-connect/userinfo
(Token im Header mit Schlüsselautorisierung einschließen)
Aber ich weiß nicht, ob das völlig dem Standard entspricht.
Was ist der richtige Ansatz?
Workaround
Kurze Antwort: Verwenden Sie go-oidc
Lange Antwort:
Lassen Sie uns zunächst verstehen, wie Spring Security JWT-Zugriffstoken automatisch validiert. Wenn Sie sich in application.yaml
配置文件中定义 OAuth 2.0 或 OIDC 客户端属性,Spring 将自动在安全过滤器链中连接一个过滤器,从 Keycloak 中获取 jwk-set
befinden, handelt es sich bei Keycloak vereinbarungsgemäß um einen Satz öffentlicher Schlüssel, die den Schlüsseln entsprechen, die Keycloak zum Signieren von Token verwendet. Der Filter wird auf alle geschützten Routen angewendet und Spring verwendet den öffentlichen Schlüssel, um zu prüfen, ob die Signatur des Tokens gültig ist, und führt gegebenenfalls weitere Prüfungen durch (Zielgruppe, Zeitüberschreitung usw.)
Wie machen wir das also in Go? Wir können eine einfache Middleware schreiben, die akzeptiert, ob der Zeitpunkt der jwk-set
并使用它来验证令牌。您需要检查 alg
声明以查看使用了哪种签名算法,从 jwk-set
中选择相应的公钥并检查签名是否有效。然后,解码令牌,确认 iss
和 sub
声明,以确保它来自受信任的颁发者并面向目标受众,并检查它是否尚未过期。检查 nbf
(不早于)和 iat
(veröffentlicht am)-Anweisung korrekt ist. Schließlich werden relevante Informationen aus dem Token bei Bedarf in den Anforderungskontext eingefügt.
func JWTMiddleware(jwkSet map[string]*rsa.PublicKey) func(http.Handler) http.Handler { return func(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { authHeader := r.Header.Get("Authorization") if authHeader == "" { http.Error(w, "Authorization header is required", http.StatusUnauthorized) return } tokenString := strings.TrimPrefix(authHeader, "Bearer ") token, err := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) { if _, ok := token.Method.(*jwt.SigningMethodRSA); !ok { return nil, fmt.Errorf("unexpected signing method: %v", token.Header["alg"]) } alg := token.Method.Alg() publicKey, ok := jwkSet[alg] if !ok { return nil, fmt.Errorf("no key found for signing method: %v", alg) } return publicKey, nil }) if err != nil || !token.Valid { http.Error(w, "Invalid token", http.StatusUnauthorized) return } // Other checks, ISS, Aud, Expirey, etc ... // If needed, store the user principal // and other relevant info the request context next.ServeHTTP(w, r) }) } }
Das obige ist der detaillierte Inhalt vonGO-Zugriffstoken authentifizieren (Keycloak). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen





我有下面的代码:publicSecurityFilterChainsecurityFilterChain(HttpSecurityhttp)throwsException{returnhttp.httpBasic().disable().cors().and().csrf().disable().authorizeHttpRequests().requestMatchers("

So entwickeln Sie mit Java ein Single-Sign-On-System basierend auf SpringSecuritySAML. Einführung: Mit der rasanten Entwicklung des Internets werden immer mehr Anwendungen entwickelt. In diesen Anwendungen ist die Benutzeranmeldung eine der häufigsten Funktionen. Bei Anwendungen auf Unternehmensebene müssen sich Benutzer jedoch bei mehreren Systemen anmelden, was zu einer sehr schlechten Benutzeranmeldeerfahrung führt. Um dieses Problem zu lösen, wurde das Single-Sign-On-System (SingleSign-On, kurz SSO) entwickelt. einfach

Ich versuche, die Zugriffstoken-Validierung mit GO zu implementieren. Aber die Beispiele, die ich online gesehen habe, scheinen nur TOKEN_SECRET zu verwenden, um es zu überprüfen. Aber ich bin es gewohnt, in Javaspring zu programmieren und muss TOKEN_SECRET nicht verwenden. Ich stelle einfach den jwk-set-uri bereit und er prüft die Gültigkeit (automatische Sicherheitsfilter usw.) und ich weiß, dass er mit dem OAuth-Server kommuniziert und diese Validierung durchführt. Gibt es in Go keine Bibliothek, die durch eine Anfrage an den OAuth-Server prüfen kann, ob das Token gültig ist? Ich weiß, dass ich dies manuell tun kann, indem ich eine Anfrage an den Benutzerinfo-Endpunkt des OAuth-Servers stelle: http://localh

In Back-End-Managementsystemen ist in der Regel eine Zugriffsberechtigungskontrolle erforderlich, um den Zugriff verschiedener Benutzer auf Schnittstellen einzuschränken. Fehlen einem Benutzer bestimmte Berechtigungen, kann er auf bestimmte Schnittstellen nicht zugreifen. In diesem Artikel wird das Waynboot-Mall-Projekt als Beispiel verwendet, um vorzustellen, wie gängige Back-End-Verwaltungssysteme das Berechtigungskontroll-Framework SpringSecurity einführen. Die Gliederung lautet wie folgt: waynboot-mall-Projektadresse: https://github.com/wayn111/waynboot-mall 1. Was ist SpringSecurity? SpringSecurity ist ein Open-Source-Projekt, das auf dem Spring-Framework basiert und darauf abzielt, leistungsstarke und flexible Sicherheit bereitzustellen für Java-Anwendungen.

So verwenden Sie Java, um ein Single-Sign-On-System basierend auf SpringSecurityOAuth2 zu entwickeln. Einführung: Mit der rasanten Entwicklung des Internets erfordern immer mehr Websites und Anwendungen, dass sich Benutzer anmelden, aber Benutzer möchten sich nicht für jede Website oder Anwendung merken. Eine Kontonummer und ein Passwort. Das Single-Sign-On-System (SingleSign-On, kurz SSO) kann dieses Problem lösen, indem es Benutzern den Zugriff auf mehrere Websites und Anwendungen ohne wiederholte Authentifizierung nach einmaliger Anmeldung ermöglicht. In diesem Artikel wird vorgestellt

Einführung In der heutigen vernetzten Welt sind RESTful-APIs zu einem Schlüsselmechanismus für die Kommunikation zwischen Anwendungen geworden. Mit Java, einer leistungsstarken Programmiersprache, können Sie effiziente, skalierbare und gut verwaltete RESTful-APIs erstellen. Kapitel 1: RESTfulAPI-Grundlagen, Prinzipien und Best Practices der RESTful-Architektur HTTP-Methoden, Statuscodes und Antwortheader Datenformate wie JSON und XML Kapitel 2: Design und Modellierung RESTfulAPI RESTfulAPI-Designprinzipien Ressourcenmodellierung und URI-Design Versionskontrolle und HATEOAS Kapitel 3: Verwendung SpringBoot zum Erstellen einer RESTful-API SpringBoot-Einführung und erste Schritte beim Erstellen und

Ich habe einen Springrest-Dienst und möchte ihn sowohl für authentifizierte als auch für nicht authentifizierte Benutzer verwenden. Wenn der Benutzer authentifiziert ist, möchte ich die Benutzerinformationen von securitycontextholder.getcontext().getauthentication() abrufen. Wenn ich .antmatchers("/app/rest/question/useroperation/list/**").permitall() in der ouath2-Konfiguration wie unten gezeigt verwende, kann ich die Benutzerinformationen des authentifizierten Benutzers abrufen, nicht jedoch der authentifizierten Benutzer erscheint 40

Vue.js und Spring Boot interagieren über: RESTful API: Vue.js verwendet Axios, um asynchrone HTTP-Anfragen zu senden, und Spring Boot bietet eine RESTful API-Implementierung. Datenweitergabe: Daten werden über Anfragen und Antworten weitergegeben, beispielsweise über den Anfragetext oder Abfrageparameter. Anforderungsmethode: Zur Angabe der Operation werden HTTP-Anforderungsmethoden wie GET, POST, PUT und DELETE verwendet. Routing: Die Spring Boot @RequestMapping-Annotation definiert das Controller-Routing, und Vue.js verwendet Vue Router, um das Schnittstellen-Routing zu definieren. Staatsverwaltung: Vu
