שליחת בקשת HTTP עם אימות בסיסי

Swift:
שליחת בקשת HTTP עם אימות בסיסי

How to: (איך לעשות:)

קוד ב-Swift ששולח בקשת HTTP עם אימות בסיסי:

import Foundation

let username = "your_username"
let password = "your_password"
let loginData = String(format: "%@:%@", username, password).data(using: String.Encoding.utf8)!
let base64LoginData = loginData.base64EncodedString()

if let url = URL(string: "https://example.com/protected") {
    var request = URLRequest(url: url)
    request.httpMethod = "GET"
    request.setValue("Basic \(base64LoginData)", forHTTPHeaderField: "Authorization")

    let task = URLSession.shared.dataTask(with: request) { data, response, error in
        guard let data = data, error == nil else {
            print(error?.localizedDescription ?? "No data")
            return
        }
        if let httpResponse = response as? HTTPURLResponse, httpResponse.statusCode == 200 {
            print("Authenticated and received data:", String(data: data, encoding: .utf8) ?? "")
        } else {
            print("Authentication failed")
        }
    }
    task.resume()
}

תוצאת דוגמה:

Authenticated and received data: {"message":"Hello, secure world!"}

או:

Authentication failed

Deep Dive (עומק הנושא)

ב-Hypertext Transfer Protocol (HTTP), אימות בסיסי הוא שיטה פשוטה להעברת שם משתמש וסיסמה. ה-MIME base64 קודד את הזוגות שם משתמש-סיסמא. האימות הבסיסי קל ליישם ולכן היה פופולרי, אך גם נחשף לפישינג וגניבת זהות.

החלפות כוללות אימות דיגיטלי, עוגיות מאובטחות, או אימות OAuth.

מימוש יכול לכלול גם מעקב לוג או להיות חלק ממנגנון אבטחה רחב יותר באפליקציה. שקול להשתמש URLSesssionDelegate עבור ניהול מתקדם של תהליך האימות.

See Also (ראה גם)