Heim  >  Artikel  >  Backend-Entwicklung  >  Go-Sprachserver-Programmierpraxis: Verwenden von JWT zum Schutz von API-Schnittstellen

Go-Sprachserver-Programmierpraxis: Verwenden von JWT zum Schutz von API-Schnittstellen

WBOY
WBOYOriginal
2023-06-18 16:55:281105Durchsuche

Im heutigen Internetzeitalter, mit der Popularität von Webanwendungen, werden APIs (Application Programming Interface, Anwendungsprogrammierschnittstellen) für Entwickler immer wichtiger und verlassen sich immer mehr darauf. Und der Schutz der Sicherheit der API-Schnittstelle ist ein sehr wichtiges Thema. In diesem Artikel wird am Beispiel der Go-Sprache erläutert, wie JWT (JSON Web Token) zum Schutz der Sicherheit von API-Schnittstellen verwendet wird.

1. Was ist JWT? Der vollständige Name von JWT ist JSON Web Token, ein offener Standard (RFC 7519), der zur Übertragung sicherer Informationen zwischen Parteien verwendet wird. JWT kann Informationen authentifizieren, autorisieren und austauschen. JWT wird häufig zur Weitergabe von Authentifizierungsinformationen in Webanwendungen oder APIs verwendet.

In JWT besteht es aus drei Teilen: Header, Payload und Signatur.

Header
  1. Der Header besteht normalerweise aus zwei Teilen: dem Typ des Tokens (z. B. JWT) und dem Namen des Algorithmus (z. B. HMAC SHA256 oder RSA).

{

"alg": "HS256",

"typ": "JWT"
}

Payload
  1. Die Payload enthält einige zuverlässige und nützliche Informationen, wie z. B. Benutzer-ID oder Zugriffsrechte. Benutzerdefinierte Ansprüche können der Nutzlast hinzugefügt werden (es wird empfohlen, nur registrierte Anspruchsnamen zu verwenden).

{

„sub“: „1234567890“,

„name“: „John Doe“,
„iat“: 1516239022
}

Signatur (Signatur)
  1. Um zu überprüfen, ob das JWT authentisch ist und gültig, Sie müssen ein Geheimnis verwenden. Signieren Sie das JWT mit dem im Header angegebenen Schlüssel und Algorithmus.

HMACSHA256(

base64UrlEncode(header) + „.“ +

base64UrlEncode(payload),
Ihr 256-Bit-Geheimnis
)

Zweitens: Verwenden Sie JWT, um die API-Schnittstelle zu schützen.

Installieren Sie JWT-Abhängigkeiten.
  1. Zuerst müssen Sie das JWT-Abhängigkeitspaket der Go-Sprache installieren:

Gehen Sie zu github.com/dgrijalva/jwt-go

JWT-Generierung und -Verifizierung
  1. Wenn Sie JWT zum Schutz der API-Schnittstelle verwenden, müssen Sie und generieren Überprüfen Sie JWT. Hier ist ein einfacher Beispielcode zum Generieren und Überprüfen von JWT:

Generate JWT

func GenerateToken(userid string) (string, error) {

token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{
    "userid": userid,
    "exp":   time.Now().Add(time.Hour * 24 * 7).Unix(), //有效期一周
})
tokenString, err := token.SignedString([]byte("mysecretkey"))
if err != nil {
    return "", err
}
return tokenString, nil

}

Verify JWT

func ValidateToken(tokenString string) ( bool, string ) {

token, err := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) {
    return []byte("mysecretkey"), nil
})
if err == nil && token.Valid {
    claims := token.Claims.(jwt.MapClaims)
    userid := claims["userid"].(string) //取出userid
    return true, userid
} else {
    return false, ""
}

}

Verwenden Sie den JWT-Überprüfungsmechanismus in der API-Schnittstelle.
  1. In der API-Schnittstelle müssen Sie zuerst das JWT aus der HTTP-Anfrage lesen und überprüfen. Wenn die Überprüfung erfolgreich ist, ist der Zugriff auf die API-Schnittstelle zulässig, andernfalls wird ein 403-Fehler (keine Berechtigung) zurückgegeben.

Das Folgende ist ein Beispielcode:

func myAPIHandler(w http.ResponseWriter, r *http.Request) {

tokenString := r.Header.Get("Authorization") //从HTTP请求中获取JWT
if tokenString == "" {
    w.WriteHeader(http.StatusForbidden)
    return
}
tokenString = strings.TrimPrefix(tokenString, "Bearer ")
ok, userid := ValidateToken(tokenString) //校验JWT
if !ok {
    w.WriteHeader(http.StatusForbidden)
    return
}
// 对于登录用户,可以从JWT中获取用户信息(例如userid),并进行权限控制
// ...
// 处理API请求
// ...

}

3. Zusammenfassung

Die Verwendung von JWT kann die Sicherheit der API-Schnittstelle wirksam schützen und gewährleisten dass nur autorisierte Benutzer auf die API-Schnittstelle zugreifen können. In der Go-Sprache ist die Verwendung von JWT ebenfalls sehr einfach. Sie müssen lediglich Abhängigkeitspakete installieren und entsprechenden Code schreiben. Gleichzeitig sind zum Schutz der Sicherheit der API-Schnittstelle auch andere Sicherheitsmaßnahmen erforderlich, wie z. B. HTTPS-Verschlüsselung, Firewall-Einstellungen, Protokollüberwachung usw.

Das obige ist der detaillierte Inhalt vonGo-Sprachserver-Programmierpraxis: Verwenden von JWT zum Schutz von API-Schnittstellen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn