Vì vậy, tôi đang sử dụng người đưa thư với quy trình OAuth 2.0 để cố gắng xác thực đối với WebApi của tôi qua Azure Active Directory. Tôi vẫn còn trên dự án mặc định với ValuesController cơ bản, chỉ cố gắng để có được xác thực và ủy quyền để làm việc.Ủy quyền đã bị từ chối cho yêu cầu này - Azure Active Directory - Nhật ký nào có sẵn?
Tôi đã theo dõi this video để thiết lập người đưa thư và theo như tôi có thể biết, tôi đã định cấu hình ứng dụng mới trong thư mục hoạt động như được mô tả.
Trao đổi mã thông báo đang hoạt động. Và Trình chặn ủy quyền {token} đang được gửi chính xác. Dưới đây là một ví dụ mã thông báo:
{Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IlliUkFRUlljRV9tb3RXVkpLSHJ3TEJiZF85cyIsImtpZCI6IlliUkFRUlljRV9tb3RXVkpLSHJ3TEJiZF85cyJ9.eyJhdWQiOiJodHRwczovL2J1Y2tldHMub25taWNyb3NvZnQuY29tL2J1Y2tldHMtcmVzdC1hcGkyMDE2MDkwMzEwNDAzMSIsImlzcyI6Imh0dHBzOi8vc3RzLndpbmRvd3MubmV0LzIwYmI2ZmEwLTU0OTItNDk0My05MjkwLWRiMWJkMTU3YjFkMS8iLCJpYXQiOjE0NzM5MTg3MDAsIm5iZiI6MTQ3MzkxODcwMCwiZXhwIjoxNDczOTIyNjAwLCJhY3IiOiIxIiwiYW1yIjpbInB3ZCJdLCJhcHBpZCI6IjlkZWVmMWFlLWU0MmYtNDg4ZC04MmY3LWUwMWRjYzNkMzE5NyIsImFwcGlkYWNyIjoiMSIsImZhbWlseV9uYW1lIjoiSWppZGFraW5ybyIsImdpdmVuX25hbWUiOiJBeW8iLCJpcGFkZHIiOiI3MC4xNzMuNDAuMjIiLCJuYW1lIjoiQWRtaW4iLCJvaWQiOiJmMTljY2Q5ZC1iMDZhLTQ0MGUtYmE3Ni05NWRjNGE4NDY3ZjEiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJMMHkzeUVwRGdRMHV2MG0wZWNKcFFIeVpZNHkzYTk3UUpnNGl6WlpzZmNVIiwidGlkIjoiMjBiYjZmYTAtNTQ5Mi00OTQzLTkyOTAtZGIxYmQxNTdiMWQxIiw idW5pcXVlX25hbWUiOiJhZG1pbkBidWNrZXRzLm9ubWljcm9zb2Z0LmNvbSIsInVwbiI6ImFkbWluQGJ1Y2tldHMub25taWNyb3NvZnQuY29tIiwidmVyIjoiMS4wIn0.NXpvslBXOpRNkmWQqj7XqVzloS3KoeSqPIlo-yUPGYkZ4bHPrAH6yD4sxMYz-19VIPFRDUMP-5h5hmaMKmuykjNUltz6wejQT9f4IeV6i7VtP3BlkfASZeAdKAiSjKh6ydV8PuJjV2HHh2WvxIKC3QQXzROwWAdeXLcgMTiKSBMULzFV8BsecgtI86_L2OISgbQZ2LgF137EPJoG7C4L1IO-10T1QIVl-Emy6AS0VKVxdzjCgiT-DFtccxME6n1CruoDy6mTKztcAkiFR1IlgY6Fvj-Y_goMQyxA5sCRebWnOQ5jeUKv4KNyNWOLJU_RiZYe0kj4IT3KDc9jjtHykg}
Tuy nhiên, mặc dù tôi có mã thông báo thành công và khi tôi bước qua debugger trong VS, tôi thấy token đến, Authorization là thất bại. Tôi nhận được phản hồi sau:
{"Message":"Authorization has been denied for this request."}
Vấn đề có vẻ là ở phía máy chủ. Khi tôi ghi đè IsAuthorized để trả về true, nó hoạt động.
Trong Azure, cả hai ứng dụng đều nằm trong cùng thư mục với quyền của người được ủy quyền.
Có bất kỳ nhật ký nào tôi có thể kiểm tra để xem lý do từ chối chính xác không? Từ đó tôi có thể tìm ra những gì đang xảy ra.
Tôi đã bật truy tìm, với:
// Web API configuration and services
var traceWriter = config.EnableSystemDiagnosticsTracing();
traceWriter.IsVerbose = true;
traceWriter.MinimumLevel = TraceLevel.Debug;
Nhưng nó không thực sự nói với tôi lý do tại sao tôi nhận được từ chối.
Nhìn vào WebApi của tôi, tôi thấy _Audience_ được định nghĩa là 'https: // {tenant_name} .onmicrosoft.com/{webapi_name}', tôi có cùng giá trị trong trang Azure AD cho __App ID URL__. Chỉ cần đề cập đến điều này vì nhận được 401 Không được ủy quyền với mã thông báo có vẻ hợp lệ trong nháy mắt đầu tiên có nhiều khả năng được gắn với cài đặt _Audience_. – evilSnobu
'{webapi_name}' == tên của mục nhập WebApi của bạn trong Azure AD – evilSnobu
@evilSnobu. Xin chào, xin lỗi vì phản hồi chậm. Cảm ơn vì bạn đã phản hồi. Tôi đã thử nó và không có súc sắc. Bất kỳ ý tưởng nào khác? –