SignalR oAuth pada host mandiri

Saya memiliki webapi yang berjalan pada aplikasi yang dihosting sendiri, keamanan disediakan melalui oauth, dan saya menyetel header otorisasi untuk memanggil API. Ini berfungsi dengan baik, kami memiliki identitas pengguna di semua panggilan.

Sekarang saya dapat meneruskan token otorisasi yang sama berdasarkan string kueri atau cookie (atau header pada beberapa jenis koneksi) ke pemberi sinyal (dihosting sendiri di aplikasi yang sama).

Token sampai ke server untuk pemberi sinyal, saya dapat menambahkannya ke dalam konteks.cookie, atau ke dalam header.

tapi..tidak ada tempat untuk mendapatkannya untuk membuat pengguna yang diautentikasi, sepertinya saya terganggu oleh kesalahan 401

Saya berasumsi saya kehilangan bagian penting dari kode yang seharusnya mengambil token dan membuat pengguna yang diautentikasi untuk pemberi sinyal (walaupun webapi/owin melakukannya sendiri).

apakah ada yang punya petunjuk, atau contoh di mana signalr bekerja dengan oauth di self-host?


person AndyBond    schedule 09.06.2015    source sumber
comment
Oke - jika saya mematikan kode yang digunakan untuk mengaktifkan autentikasi pembawa webapi, maka kode tersebut berfungsi (komentari 2 baris ini): //config.SuppressDefaultHostAuthentication(); //config.Filters.Add(HostAuthenticationFilter baru(OAuthDefaults.AuthenticationType)); Jadi saya rasa saya harus menambahkan filter ke dalam pipa signalR juga.   -  person AndyBond    schedule 09.06.2015


Jawaban (1)


Anda benar bahwa Anda perlu menyiapkan cara untuk mengautentikasi dan mengatur pengguna saat ingin menggunakan SignalR dengan OAuth.

Anda dapat membuat AuthorizeAttribute pelanggan untuk SignalR. Di dalamnya pada dasarnya Anda bisa mendapatkan string kueri untuk mendapatkan token, setelah Anda memiliki token, Anda dapat membuka proteksinya dan mulai memvalidasinya serta mengatur konteks pengguna dalam permintaan.

Saya punya contoh di

https://github.com/louislewis2/AngularJSAuthentication/blob/master/AngularJSAuthentication.API/SignalRHelpers/QueryStringBearerAuthorizeAttribute.cs

Setelah diterapkan, Anda cukup menghias hub Anda dengan [QueryStringBearerAuthorize]

Tautan github memiliki contoh kerja lengkap untuk ini dan mungkin memberikan beberapa wawasan berharga.

person Louis Lewis    schedule 17.06.2015