5

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.

+0

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

+0

'{webapi_name}' == tên của mục nhập WebApi của bạn trong Azure AD – evilSnobu

+0

@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? –

Trả lời

1

Vì vậy, có vẻ như Azure AD Directory bị hỏng một cách nào đó. Tôi nghĩ có thể đã xảy ra sự cố với ứng dụng khái niệm ban đầu mà tôi đã tạo. Vì lý do gì, tôi không thể xóa ứng dụng đó trong cổng Azure, và do đó không thể xóa chính thư mục đó.

Tuy nhiên, việc tạo một thư mục hoàn toàn mới, dường như đã khắc phục được. Tôi theo cùng một hướng.

Sự khác biệt duy nhất, là tôi đã thêm thông tin sau vào Web.config: <add key="owin:AppStartup" value="buckets_api.Startup"/>. Trong khi đó, lần cuối tôi thêm: <add key="owin:AutomaticAppStartup" value="false"/> để giải quyết vấn đề khởi động api tôi gặp phải với mẫu mới. Tuy nhiên, tôi không tin đó là những gì giải quyết vấn đề.

Một lưu ý phụ, tôi cũng lưu ý rằng Chrome không thể hoàn thành trao đổi mã thông báo trong trình duyệt bật lên mà không cần tôi khởi chạy lại ứng dụng dưới dạng quản trị viên. Tôi không chắc liệu điều đó có liên quan hay không, vì trước đây tôi đã nhận được thẻ, vì vậy tôi không nghĩ vậy. Nhưng tôi muốn ghi lại những gì làm việc cho tôi toàn bộ, trong trường hợp ai đó gặp phải điều này trong tương lai.

+0

Bạn có bất kỳ phản hồi nào từ hỗ trợ Azure về vấn đề này không? Tôi bắt đầu gặp vấn đề tương tự gần đây với một trong các AD của đối tượng thuê của tôi, nhưng tiếc là tôi không thể xóa cá thể AD của mình và tạo lại. –

Các vấn đề liên quan