Saya memiliki Aplikasi MVC dan proyek API Web terkait yang keduanya dihosting di server jarak jauh di IIS. Mereka berbagi kumpulan aplikasi yang sama. Setiap kali saya mencoba melakukan panggilan ke Web API dari Aplikasi MVC saya mendapatkan kesalahan 403, yang tampaknya berasal dari kredensial buruk yang diteruskan oleh HttpClientHandler. Saya punya
UseDefaultCredentials = true
dan saya sudah mencoba pengaturan
Credentials = CredentialCache.DefaultNetworkCredentials
namun tidak satu pun dari hal ini yang mengizinkan permintaan API untuk dilalui.
Menyetel Kumpulan Aplikasi untuk menggunakan Nama Pengguna/Kata Sandi AD saya memungkinkan semua permintaan API diproses, dan juga memanggil API langsung dari Tukang Pos akan mengembalikan data dengan benar.
Asumsi saya adalah IIS AppPool[Pool Name] diteruskan dalam permintaan, dan kredensial yang tepat tidak pernah diteruskan. Apakah ada cara lain untuk mengatasi hal ini tanpa membuat API tidak aman (yaitu hanya beberapa grup domain yang dapat mengaksesnya)?
Contoh panggilan yang saya lakukan ke API dari aplikasi MVC
public async Task<HttpResponseMessage> CreateIncident(Incident model)
{
using (var client = new HttpClient(new HttpClientHandler { UseDefaultCredentials = true }))
{
var newIncident = new StringContent(JsonConvert.SerializeObject(model), Encoding.UTF8, "application/json");
var response = await client.PostAsync(hostUri, newIncident);
return response;
}
}