ฉันมีแอปพลิเคชัน MVC และโครงการ Web API ที่เกี่ยวข้องซึ่งทั้งคู่โฮสต์บนเซิร์ฟเวอร์ระยะไกลบน IIS พวกเขาแชร์กลุ่มแอปพลิเคชันเดียวกัน เมื่อใดก็ตามที่ฉันพยายามโทรไปยัง Web API จากแอปพลิเคชัน MVC ฉันได้รับข้อผิดพลาด 403 ซึ่งดูเหมือนว่าจะมาจากข้อมูลรับรองที่ไม่ถูกต้องที่ถูกส่งผ่านโดย HttpClientHandler ฉันมี
UseDefaultCredentials = true
และฉันได้ลองตั้งค่าแล้ว
Credentials = CredentialCache.DefaultNetworkCredentials
แต่สิ่งเหล่านี้ไม่อนุญาตให้คำขอ API ผ่านไปได้
การตั้งค่ากลุ่มแอปพลิเคชันให้ใช้ชื่อผู้ใช้/รหัสผ่าน AD ของฉันทำให้คำขอ API ทั้งหมดผ่านไปได้ และยังเรียก API โดยตรงจากบุรุษไปรษณีย์เพื่อส่งคืนข้อมูลอย่างถูกต้อง
สมมติฐานของฉันคือ IIS AppPool[ชื่อพูล] ได้รับการส่งต่อในคำขอ และข้อมูลประจำตัวที่เหมาะสมจะไม่ถูกส่งผ่าน มีวิธีแก้ไขปัญหานี้โดยไม่ทำให้ API ไม่ปลอดภัยหรือไม่ (เช่น มีกลุ่มโดเมนเพียงไม่กี่กลุ่มเท่านั้นที่สามารถเข้าถึงได้)
ตัวอย่างการโทรที่ฉันทำกับ API จากแอปพลิเคชัน 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;
}
}