API

6

'a erişmeye çalışırken yayıncı doğrulanamıyor, buradaki sorunumun kısa bir açıklaması var - şu anki kurulumum ve ASP.NET Core Identity ile kimlik doğrulaması yapılan IdentityServer4 uygulaması, onun tarafından korunan bir API kaynağı ve bir Xamarin.Android uygulamasıdır. istemcisi. Şu anki sorunum, istemcinin (Android) API'den şu hatadan (API günlüklerinden) bir şey alamamasıdır:API

"Taşıyıcı" kimliği doğrulanmamıştır. Hata iletisi: "IDX10205: Düzenleyici doğrulaması başarısız. Veren: 'http://10.0.2.2:5000' Eşleşmedi: validationParameters.ValidIssuer: 'null' veya validationParameters.ValidIssuers: 'http://127.0.0.1:5000'."

Temel olarak, Android emülatörünü kullandığımdan, makinemde localhost üzerinde bir şey aramak için, bunun için 10.0.2.2 URL'sini kullanmam gerekiyor. Ardından sorun ortaya çıkıyor - Kimlik Sunucusu kimlik doğrulaması ile gayet iyi, giriş yapabilirim, erişim belirteci alıyorum, ancak bundan sonra API'yi aramam gerekiyor. Ve bu, hatanın gerçekleştiği yer - aynı otorite (127.0.0.1:5000) olan bir ihraççı bekliyor, ancak Android istemcisinin yetkisi olan 10.0.2.2:5000'i alıyor.

Yani, sorum şu: 10.0.2.2'nin de geçerli bir yayıncı olduğunu belirtmek için bir yol var mı yoksa istemciyi test edebilmem için API ve Kimlik Sunucusunu dağıtmayı düşünmeye başlamak zorunda mıyım? . Denemek istediğim her küçük şey için dağıtmak yerine yerel makinemde tüm çözümün çalışmasının bir yolu olsaydı gerçekten çok isterdim.

Herhangi bir yardım çok takdir edilecektir.

+0

Merhaba! bunun için herhangi bir çözüm buldunuz mu? – JayDeeEss

+0

Hayır, gerçekten ona bakmak için zamana sahip olmadı - şu ana kadar fikirlerim uygulamayı yerel bir IIS'ye dağıtmayı denemek ve güvenlik duvarında açmak ya da uygulamayı 5.000 numaralı limana gelen her şeye güvenin. Muhtemelen bazı kapalı günlerde bunu düzeltmeye çalışacağım, çünkü bu iş ile ilgili değil, kişisel bir proje için. –

+0

Tamam, cevabınız için teşekkürler. Evet, uygulamanın en kolay yolu, uygulamayı yerel sunucuya dağıtmak ve bu URL'lere erişmek olduğunu düşünüyorum. şu anda ne yapıyorum ve mükemmel çalışıyor! – JayDeeEss

cevap

0

Bu nedenle, bu sorunu Web'in yerel kısmını çalıştırarak görebilmem için sorunu çözmeyi başardım. Daha ayrıntılı olarak yaptığım şey - ana bilgisayarı oluşturduğum Program.cs içinde, .UseUrls("http://*:5001") yöntemini kullanıyorum ve sonra uygulamayı dotnet run ile çalıştırıyorum.

Bu şekilde uygulamanıza, makinenizin IP adresi ve belirttiğiniz bağlantı noktası aracılığıyla yerel ağınızda erişilebilir. Ayrıca, bunun çalışması için, kullanmakta olduğunuz bağlantı noktası üzerinden trafiğe izin vermek için Güvenlik Duvarı'ndaki yeni bir Giden Kuralı tanımlamanız gerekir. Umarım bu bir başkasına da yardımcı olur, bu benim çalışmam gerekeni elde etmenin en kolay yolu olarak ortaya çıktı ve bu da orada çalışmak için çabalarken IIS ile bir süre kavga ettikten sonra.

4

İlk: standard verilirken, yalnızca bir Veren'i yönetirsiniz.

Kendi Kimliğinizi/Token neslini yönetiyor musunuz? Durum böyle değil gibi geliyor.

API'larınızı açıkça oluşturmak için API'nızı özelleştirebilirsiniz. Daha sonra, herkesin aynı şekilde onaylayabilmesi için küresel bir Vericiyi (proje URL'niz gibi) belirtebilirsiniz. Simgeniz oluşturulan ve gönderildikten sonra

var token = new JwtSecurityToken(
       issuer: "http://my-perfect-proj.net", 
       claims: ..., 
       notBefore: DateTime.Now, 
       expires: DateTime.Now.AddHours(1), 
       signingCredentials: ...) 
      ); 

, (zaman, kullanıcının verilerini kontrol ederek veren) Zevkleriniz doğrultusunda gelen isteği doğrulamak.

Creating RESTful API with Authentication

DÜZENLEME

ASP.NET Core JWT Bearer Token Custom Validation

: Aynı makinede Xamarin ve Visual Studio ile, bana bu tip problemlerle karşılaşmaktadır verdi yoktu ama bu durumda, ben Visual Studio Emulator kullanıyordu. Bunu bir deneyin ve başka türden geçici çözümlerden kaçınmalısınız.

+0

Bir çözüm olabilir, ancak bunu yalnızca yerel olarak çalıştırabilmek için yapmamayı tercih ederim - kod tabanını değiştirmemeyi tercih ediyorum ancak API'yi içimde göstermenin bir yolunu bulmayı tercih ediyorum ağ. Ve evet, VS Emulator şimdi kullanıyorum Google Emulator ile karşılaştırıldığında farklı çalışır, ancak bazı ihtiyaçları için bir ağrı bu yüzden kullanmayı bıraktım. Yine de giriş için teşekkürler - başka biri bundan yararlanabilir. –