Topik ini sangat membingungkan bagi saya. Saya pemula dalam aplikasi HTTP tetapi perlu mengembangkan klien iPhone yang mengkonsumsi data JSON dari suatu tempat. Saya memilih Web API dari MS karena sepertinya cukup mudah tetapi ketika menyangkut otentikasi pengguna, banyak hal yang cukup membuat frustrasi.
Saya kagum bagaimana saya tidak dapat menemukan contoh yang jelas tentang cara mengotentikasi pengguna langsung dari layar masuk ke menggunakan Authorize
atribut di atas ApiController
metode saya setelah beberapa jam Googling.
Ini bukan pertanyaan tetapi permintaan untuk contoh bagaimana melakukan ini dengan tepat. Saya telah melihat halaman-halaman berikut:
Meskipun ini menjelaskan cara menangani permintaan yang tidak sah, ini tidak menunjukkan dengan jelas sesuatu seperti LoginController
atau sesuatu seperti itu untuk meminta kredensial pengguna dan memvalidasinya.
Adakah yang mau menulis contoh sederhana yang bagus atau mengarahkan saya ke arah yang benar?
Terima kasih.
sumber
Jawaban:
Itu karena Anda bingung tentang dua konsep ini:
Otentikasi adalah mekanisme di mana sistem dapat mengidentifikasi penggunanya dengan aman. Sistem otentikasi memberikan jawaban atas pertanyaan:
Otorisasi adalah mekanisme di mana sistem menentukan tingkat akses yang harus dimiliki pengguna terotentikasi tertentu untuk mendapatkan sumber daya yang dikendalikan oleh sistem. Sebagai contoh, sistem manajemen basis data mungkin dirancang untuk memberikan individu tertentu dengan kemampuan untuk mengambil informasi dari database tetapi tidak kemampuan untuk mengubah data yang disimpan dalam basis data, sementara memberi individu lain kemampuan untuk mengubah data. Sistem otorisasi memberikan jawaban atas pertanyaan:
The
Authorize
atribut dalam MVC digunakan untuk menerapkan aturan akses, misalnya:Aturan di atas hanya akan memungkinkan pengguna dalam peran Admin dan Pengguna Super untuk mengakses metode ini
Aturan-aturan ini juga dapat diatur di file web.config, menggunakan
location
elemen. Contoh:Namun, sebelum aturan otorisasi tersebut dijalankan, Anda harus disahkan ke situs web saat ini .
Dari sini, kami dapat membagi masalah menjadi dua:
Otentikasi pengguna saat mengonsumsi layanan API Web dalam aplikasi Web yang sama
Ini akan menjadi pendekatan yang paling sederhana, karena Anda akan mengandalkan Otentikasi di ASP.Net
Ini adalah contoh sederhana:
Web.config
Pengguna akan diarahkan ke rute akun / login , di sana Anda akan membuat kontrol khusus untuk meminta kredensial pengguna dan kemudian Anda akan mengatur cookie otentikasi menggunakan:
Otentikasi lintas platform
Kasus ini akan terjadi ketika Anda hanya mengekspos layanan API Web dalam aplikasi Web karena itu, Anda akan memiliki klien lain yang mengkonsumsi layanan tersebut, klien dapat berupa aplikasi Web lain atau aplikasi .Net (Formulir Win, WPF, konsol, layanan Windows, dll)
Sebagai contoh, asumsikan bahwa Anda akan menggunakan layanan Web API dari aplikasi web lain pada domain jaringan yang sama (dalam intranet), dalam hal ini Anda bisa mengandalkan otentikasi Windows yang disediakan oleh ASP.Net.
Jika layanan Anda terpapar di Internet, maka Anda harus memberikan token yang diautentikasi ke setiap layanan Web API.
Untuk info lebih lanjut, ambil rampasan ke artikel berikut:
http://stevescodingblog.co.uk/basic-authentication-with-asp-net-webapi/
http://codebetter.com/johnvpetersen/2012/04/02/making-your-asp-net-web-apis-secure/
sumber
Jika Anda ingin mengautentikasi terhadap nama pengguna dan kata sandi dan tanpa cookie otorisasi , atribut MVC4 Authorize tidak akan berfungsi di luar kotak. Namun, Anda dapat menambahkan metode pembantu berikut ke controller Anda untuk menerima header otentikasi dasar. Sebut saja dari awal metode pengendali Anda.
Dari sisi klien, penolong ini membuat
HttpClient
dengan tajuk otentikasi di tempat:sumber
Saya sedang mengerjakan proyek MVC5 / Web API dan harus bisa mendapatkan otorisasi untuk metode Web Api. Ketika tampilan indeks saya pertama kali dimuat saya membuat panggilan ke metode API Web 'token' yang saya percaya dibuat secara otomatis.
Kode sisi klien (CoffeeScript) untuk mendapatkan token adalah:
Jika berhasil berikut ini disebut, yang menyimpan token otentikasi secara lokal:
Kemudian jika saya perlu membuat panggilan Ajax ke metode API Web yang memiliki tag [Otorisasi] saya cukup menambahkan header berikut untuk panggilan Ajax saya:
sumber
response.access_token
datangnya. Apakah Anda mengaturnya dari kode c # ..?