Alle Originalinhalte werden auf Ukrainisch erstellt. Noch nicht alle Inhalte wurden übersetzt. Einige Beiträge sind möglicherweise nur auf Ukrainisch verfügbar.Mehr erfahren

Hauptmethoden der Authentifizierung in der API

Beitrags-Cover: Hauptmethoden der Authentifizierung in der API
InhaltsverzeichnisKlicke auf den Link, um zur gewünschten Stelle zu navigieren
Dieser Inhalt wurde automatisch aus dem Ukrainischen übersetzt.
Wenn wir eine API in Ruby on Rails erstellen, ist es wichtig zu kontrollieren, wer Zugriff hat auf die Ressourcen. Hier sind die grundlegenden Ansätze zur Authentifizierung:

Basis-Authentifizierung

Die einfachste, aber wenig sichere Methode. Bei der Basis-Authentifizierung überträgt der Authorization-Header Benutzernamen und Passwort, die in Base64 kodiert sind.
Format des Headers:
Authorization: Basic <base64_string>
<base64_string> = Base64-kodierter String username:password
Zum Beispiel, wenn Sie haben:
  • username = apiuser
  • password = secret123
Zuerst bilden wir den String:
apiuser:secret123
Dann kodieren wir ihn in Base64:
require 'base64'

credentials = "apiuser:secret123"
encoded = Base64.strict_encode64(credentials)
puts encoded
# => YXBpdXNlcjpzZWNyZXQxMjM=
Also wird der Header so aussehen:
Authorization: Basic YXBpdXNlcjpzZWNyZXQxMjM=
Wenn Rails Authorization: Basic ... sieht, dekodiert die Methode authenticate_or_request_with_http_basic Base64, trennt username:password und überprüft sie auf dem Server.

Token-Authentifizierung

Der Benutzer erhält ein einzigartiges Token, das er zu jeder Anfrage hinzufügt.
Eine sicherere Option für mobile oder Frontend-Anwendungen.
class Api::V1::BaseController < ApplicationController
  before_action :authenticate_user!

  private

  def authenticate_user!
    token = request.headers['Authorization']&.split(' ')&.last
    @current_user = User.find_by(api_token: token)
    render json: { error: 'Unauthorized' }, status: :unauthorized unless @current_user
  end
end
Header der Anfrage:
Authorization: Token abc123

JWT (JSON Web Token)

Eine beliebte Methode für stateless APIs. Der Server speichert keine Sitzungen, der Client sendet ein signiertes Token.
Beispiel mit dem Gem jwt:
# Token erstellen
payload = { user_id: user.id, exp: 24.hours.from_now.to_i }
token = JWT.encode(payload, Rails.application.secret_key_base)

# Token überprüfen
decoded = JWT.decode(token, Rails.application.secret_key_base).first
user_id = decoded["user_id"]
Header:
Authorization: Bearer <jwt_token>

OAuth 2.0

Ein Standard für die Autorisierung und den Zugriff auf Ressourcen über Drittanbieter-Services oder APIs.
Um einen eigenen OAuth 2-Server in Rails zu erstellen, verwendet man Doorkeeper:
# Gemfile
gem 'doorkeeper'
Nach der Einrichtung können Zugriffstokens an externe Clients ausgegeben werden:
Authorization: Bearer <access_token>
Wenn es erforderlich ist, Benutzern das Einloggen über Drittanbieter-Services (Google, Facebook, GitHub) zu ermöglichen, verwendet man OmniAuth in Verbindung mit Devise zur Authentifizierung.
Einfach ausgedrückt: Doorkeeper — für den Zugriff auf die API, OmniAuth — für das Einloggen von Benutzern über andere Dienste.

Dieser Beitrag hat noch keine Ergänzungen vom Autor.

Was ist exponentielles Wachstum?
16. Sep, 18:57 Uhr

Was ist exponentielles Wachstum?

meme code
meme code@memecode
Was ist faktoriale Komplexität?
16. Sep, 19:03 Uhr

Was ist faktoriale Komplexität?

meme code
meme code@memecode
Was ist NP-Komplexität?
16. Sep, 19:31 Uhr

Was ist NP-Komplexität?

meme code
meme code@memecode
Offset vs Cursor Pagination in Rails: was wählen und warum
24. Sep, 15:22 Uhr

Offset vs Cursor Pagination in Rails: was wählen und warum

meme code
meme code@memecode
Was ist Row Security in PostgreSQL und warum ist es für Rails-Entwickler wichtig?
04. Okt, 19:06 Uhr

Was ist Row Security in PostgreSQL und warum ist es für Rails-Entwickler wichtig?

meme code
meme code@memecode
Was ist ivar in Ruby / Rails?
19. Okt, 20:12 Uhr

Was ist ivar in Ruby / Rails?

meme code
meme code@memecode
Was unterscheidet OAuth 1 von OAuth 2
19. Okt, 20:34 Uhr

Was unterscheidet OAuth 1 von OAuth 2

meme code
meme code@memecode
Was ist ORM und wozu wird es benötigt?
26. Okt, 14:00 Uhr

Was ist ORM und wozu wird es benötigt?

meme code
meme code@memecode
MCP: das neue Internet, in dem Websites mit KI kommunizieren
04. Nov, 11:43 Uhr

MCP: das neue Internet, in dem Websites mit KI kommunizieren

meme code
meme code@memecode
Warum ist TOON besser als JSON bei der Arbeit mit KI?
14. Nov, 15:14 Uhr

Warum ist TOON besser als JSON bei der Arbeit mit KI?

meme code
meme code@memecode