Saya mencari untuk mengotentikasi pengguna dari aplikasi klien saat menggunakan API Web ASP.NET . Saya telah menonton semua video di situs dan juga membaca posting forum ini .
Menempatkan [Authorize]
atribut dengan benar mengembalikan 401 Unauthorized
status. Namun, saya perlu tahu cara mengizinkan pengguna untuk masuk ke API.
Saya ingin memberikan kredensial pengguna dari aplikasi Android ke API, meminta pengguna masuk, dan kemudian meminta semua panggilan API berikutnya diautentikasi sebelumnya.
android
.net
authentication
asp.net-web-api
Mujtaba Hassan
sumber
sumber
Jawaban:
Anda perlu mengirim cookie Otentikasi Formulir yang valid bersama dengan permintaan. Cookie ini biasanya dikirim oleh server saat mengautentikasi (
LogOn
tindakan) dengan memanggil[FormsAuthentication.SetAuthCookie
metode (lihat MSDN ).Jadi klien perlu melakukan 2 langkah:
LogOn
tindakan dengan mengirimkan nama pengguna dan kata sandi. Secara bergiliran tindakan ini akan memanggilFormsAuthentication.SetAuthCookie
metode (jika kredensial valid) yang pada gilirannya akan mengatur cookie otentikasi formulir dalam respons.[Authorize]
tindakan yang dilindungi dengan mengirimkan cookie otentikasi bentuk yang diambilnya dalam permintaan pertama.Mari kita ambil contoh. Misalkan Anda memiliki 2 pengontrol API yang ditentukan dalam aplikasi web Anda:
Yang pertama bertanggung jawab untuk menangani otentikasi:
dan yang kedua berisi tindakan dilindungi yang hanya dapat dilihat oleh pengguna yang berwenang:
Sekarang kita bisa menulis aplikasi klien yang menggunakan API ini. Berikut contoh aplikasi konsol trivial (pastikan Anda telah menginstal
Microsoft.AspNet.WebApi.Client
danMicrosoft.Net.Http
paket NuGet):Dan inilah tampilan 2 permintaan HTTP di kabel:
Permintaan otentikasi:
Respon otentikasi:
Permintaan untuk data yang dilindungi:
Tanggapan untuk data yang dilindungi:
sumber
Saya mengambil android sebagai contoh.
Mohon perhatian : i.localhost tidak dapat digunakan. Perangkat Android terlihat localhost sebagai host itu sendiri. ii.Jika menyebarkan API web di IIS, otentikasi Formulir harus dibuka.
sumber
Gunakan kode ini dan akses database
sumber