"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > لماذا تعتبر مصادقة ASAP (Atlassian) الخيار السريع والآمن لمصادقة REST API؟

لماذا تعتبر مصادقة ASAP (Atlassian) الخيار السريع والآمن لمصادقة REST API؟

تم النشر بتاريخ 2024-11-17
تصفح:874

Why ASAP (Atlassian) Auth is the Fast & Safe Choice for REST API Authentication?

باعتبارك مطورًا كبيرًا يعمل على نطاق واسع مع واجهات برمجة التطبيقات، فإن الأمان والكفاءة دائمًا ما يكونان على رأس الأولويات. عندما يتعلق الأمر بتأمين واجهات برمجة تطبيقات REST، هناك العديد من طرق المصادقة المتاحة، ولكن لم يتم إنشاؤها جميعها على قدم المساواة.

تبرز مصادقة ASAP (مصادقة الخدمات والمشاريع) من Atlassian كخيار قوي وقابل للتطوير وآمن، لا سيما عند التعامل مع الخدمات الصغيرة أو واجهات برمجة التطبيقات التي تتطلب آليات مصادقة قوية. ولكن قبل التعمق في سبب اعتبار ASAP خيارًا رائعًا، دعنا نلقي نظرة سريعة على ماهية REST APIs وسبب أهميتها.

ما هي واجهات برمجة تطبيقات REST؟ ؟

واجهات برمجة التطبيقات

REST (نقل الحالة التمثيلية) هي مجموعة من القواعد التي تسمح بإنشاء خدمات ويب خفيفة الوزن وقابلة للصيانة وقابلة للتطوير. وهي تتبع بنية خادم العميل عديمة الحالة، حيث يقوم الخادم بمعالجة طلب العميل ويرسل استجابة، عادةً بتنسيق JSON أو XML. تُستخدم REST APIs على نطاق واسع بسبب بساطتها وقابليتها للتوسع وقدرتها على فصل واجهة المستخدم عن الخادم، مما يجعلها مثالية لبناء خدمات الويب التي يمكن الوصول إليها من قبل عملاء مختلفين، بما في ذلك متصفحات الويب والهواتف المحمولة الأجهزة والخوادم الأخرى.

ما هي المصادقة في أسرع وقت ممكن؟ ?️

ASAP (مصادقة الخدمات والمشاريع) هي آلية مصادقة قائمة على الرمز المميز تم تطويرها بواسطة Atlassian. لقد تم تصميمه خصيصًا للاتصال من خدمة إلى خدمة، حيث تحتاج إحدى الخدمات إلى الاتصال بأخرى بشكل آمن. بدلاً من الاعتماد على بيانات اعتماد المستخدم أو OAuth (الذي يركز بشكل أكبر على المستخدم)، يستخدم ASAP JWT (JSON Web Tokens) لمنح الوصول المؤقت إلى الخدمات. يعد هذا مفيدًا بشكل خاص في بنيات الخدمات الصغيرة، حيث تحتاج الخدمات إلى مصادقة الطلبات والترخيص لها بكفاءة دون تحمل تكاليف إدارة جلسات المستخدم أو بيانات الاعتماد.

الميزات الرئيسية لمصادقة ASAP:

  • المستند إلى JWT: يعتمد ASAP على رموز JWT، وهي مدمجة وآمنة لعنوان URL، ويمكن أن تحمل مطالبات تمثل هوية الطالب وأذوناته.
  • بدون حالة: لا يحتاج الخادم إلى تخزين أي معلومات عن الجلسة، حيث يتم تشفير جميع المعلومات الضرورية في JWT.
  • آمن: يتم توقيع رموز ASAP باستخدام مفتاح خاص، مما يضمن أن الخدمات المعتمدة فقط هي التي يمكنها إنشاء رموز مميزة صالحة.
  • *قابلة للتوسع: * مثالية لبنيات الخدمات الصغيرة، حيث تتواصل الخدمات بشكل متكرر مع بعضها البعض.

كيفية تنفيذ ASAP Auth في Python وJava وGo؟

الآن بعد أن فهمنا أساسيات ASAP Auth، دعونا نلقي نظرة على كيفية تنفيذها بلغات البرمجة المختلفة.

تنفيذ بايثون

import jwt
import requests
from datetime import datetime, timedelta
import os

# Define ASAP token creation function
def create_asap_token(issuer, audience, private_key):
    current_time = datetime.utcnow()
    payload = {
        'iss': issuer,
        'aud': audience,
        'iat': current_time,
        'exp': current_time   timedelta(minutes=5),
    }
    token = jwt.encode(payload, private_key, algorithm='RS256')
    return token

# Load private key from environment variable or file
private_key = os.getenv('PRIVATE_KEY')
if not private_key:
    with open('path_to_private_key.pem', 'r') as key_file:
        private_key = key_file.read()

issuer = 'your-service'
audience = 'target-service'

token = create_asap_token(issuer, audience, private_key)
if isinstance(token, bytes):
    token = token.decode('utf-8')

headers = {
    'Authorization': f'Bearer {token}'
}

try:
    response = requests.get('https://api.target-service.com/data', headers=headers)
    response.raise_for_status()  # Raises HTTPError for bad responses
    print(response.json())
except requests.exceptions.RequestException as e:
    print(f"Request failed: {e}")


تنفيذ جافا

import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;

import java.nio.file.Files;
import java.nio.file.Paths;
import java.security.KeyFactory;
import java.security.PrivateKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.time.Instant;
import java.util.Date;

public class ASAPAuthExample {

    public static PrivateKey loadPrivateKey(String filename) throws Exception {
        String key = new String(Files.readAllBytes(Paths.get(filename)))
                        .replace("-----BEGIN PRIVATE KEY-----", "")
                        .replace("-----END PRIVATE KEY-----", "")
                        .replaceAll("\\s", "");

        byte[] keyBytes = java.util.Base64.getDecoder().decode(key);

        PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(keyBytes);
        KeyFactory kf = KeyFactory.getInstance("RSA");
        return kf.generatePrivate(spec);
    }

    public static String createASAPToken(String issuer, String audience, PrivateKey privateKey) {
        Algorithm algorithm = Algorithm.RSA256(null, privateKey);
        Instant now = Instant.now();

        return JWT.create()
                .withIssuer(issuer)
                .withAudience(audience)
                .withIssuedAt(Date.from(now))
                .withExpiresAt(Date.from(now.plusSeconds(300))) // 5 minutes expiry
                .sign(algorithm);
    }

    public static void main(String[] args) {
        try {
            String issuer = "your-service";
            String audience = "target-service";
            PrivateKey privateKey = loadPrivateKey("path_to_private_key.pem");

            String token = createASAPToken(issuer, audience, privateKey);

            // Use the token to make a secure API request (using your preferred HTTP client)
            System.out.println("Generated Token: "   token);
        } catch (Exception e) {
            System.err.println("Error creating token: "   e.getMessage());
        }
    }
}

الذهاب إلى التنفيذ

package main

import (
    "fmt"
    "io/ioutil"
    "time"
    "github.com/golang-jwt/jwt"
)

func loadPrivateKey(path string) (*rsa.PrivateKey, error) {
    keyData, err := ioutil.ReadFile(path)
    if err != nil {
        return nil, err
    }

    return jwt.ParseRSAPrivateKeyFromPEM(keyData)
}

func createASAPToken(issuer, audience, privateKeyPath string) (string, error) {
    privateKey, err := loadPrivateKey(privateKeyPath)
    if err != nil {
        return "", err
    }

    token := jwt.NewWithClaims(jwt.SigningMethodRS256, jwt.MapClaims{
        "iss": issuer,
        "aud": audience,
        "iat": time.Now().Unix(),
        "exp": time.Now().Add(5 * time.Minute).Unix(),
    })

    tokenString, err := token.SignedString(privateKey)
    if err != nil {
        return "", err
    }

    return tokenString, nil
}

func main() {
    issuer := "your-service"
    audience := "target-service"
    privateKeyPath := "path_to_private_key.pem"

    token, err := createASAPToken(issuer, audience, privateKeyPath)
    if err != nil {
        fmt.Println("Error creating token:", err)
        return
    }

    // Use the token to make a secure API request (using your preferred HTTP client)
    fmt.Println("Generated Token:", token)
}

كيفية اختبار المصادقة في أسرع وقت ممكن باستخدام الأدوات؟

يتطلب اختبار المصادقة في أسرع وقت ممكن أدوات يمكنها إرسال طلبات HTTP برؤوس مخصصة. وإليك كيفية القيام بذلك باستخدام EchoAPI وcURL.

اختبار مع EchoAPI؟

Why ASAP (Atlassian) Auth is the Fast & Safe Choice for REST API Authentication?
حدد طريقة واجهة برمجة التطبيقات وعنوان URL:
اختر طريقة HTTP الصحيحة (على سبيل المثال، POST، GET) وأدخل عنوان URL لنقطة نهاية API.

انتقل إلى علامة التبويب "المصادقة":
انقر فوق علامة التبويب "مصادقة" في لوحة الطلب.

اختر ASAP (الأطلسي) المصادقة:
من القائمة المنسدلة النوع، حدد ASAP (Atlassian).

تكوين الخوارزمية والحقول:

  • الخوارزمية: اختر خوارزمية التوقيع (على سبيل المثال، HS256).
  • جهة الإصدار: أدخل الهوية التي تنشئ الرمز المميز.
  • الجمهور: قم بتوفير المستلمين المقصودين للرمز المميز.
  • معرف المفتاح: أدخل المعرف لمفتاح التوقيع.
  • المفتاح الخاص: أدخل مفتاح التوقيع.

حفظ وإرسال:
انقر فوق حفظ، ثم إرسال لتنفيذ الطلب باستخدام مصادقة ASAP

Why ASAP (Atlassian) Auth is the Fast & Safe Choice for REST API Authentication?

اختبار مع الضفيرة

curl -X GET "https://api.target-service.com/data" \
-H "Authorization: Bearer "

يرسل هذا الأمر رمز ASAP كجزء من رأس HTTP، ويمكنك فحص الاستجابة مباشرة في الجهاز.

خاتمة ؟

يوفر ASAP Auth طريقة قوية وقابلة للتطوير وآمنة للتعامل مع المصادقة في اتصالات خدمة إلى خدمة، خاصة ضمن بنيات الخدمات الصغيرة. من خلال الاستفادة من JWT، يتيح ASAP المصادقة المستندة إلى الرمز المميز عديمة الحالة، وهو أمر بالغ الأهمية للحفاظ على مستوى عالٍ من الأمان والأداء. سواء كنت تعمل باستخدام Python، أو Java، أو Go، فإن تنفيذ ASAP Auth يعد أمرًا مباشرًا ويتكامل بشكل جيد مع مسارات العمل الحالية.

علاوة على ذلك، فإن اختبار طريقة المصادقة هذه باستخدام أدوات مثل EchoAPI أو cURL يضمن أن التنفيذ الخاص بك آمن ويعمل بشكل صحيح. بينما تستمر في إنشاء واجهات برمجة تطبيقات REST وتأمينها، فكر في استخدام ASAP Auth لتعزيز الأمان والكفاءة عبر خدماتك.




بيان الافراج تم إعادة إنتاج هذه المقالة على: https://dev.to/philip_zhang_854092d88473/why-asap-atlassian-auth-is-the-fast-safe-choice-for-rest-api-authentication-18gl?1 إذا كان هناك أي انتهاك يرجى الاتصال بـ Study_golang @163.comdelete
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3