5

Tôi có một ứng dụng đặt tên là 'Apple' được đăng ký với Azure AD có quyền được ủy quyền trên ứng dụng Azure Management API. Khi được yêu cầu cho ứng dụng này, nó tạo ra nguồn tài nguyên cũ. lưu trữ tài khoản tự động và điều này hoạt động tốt.Xác thực Azure AD giữa các ứng dụng

Tôi có một ứng dụng khác là ứng dụng MVC và nó cũng được đăng ký với cùng một đối tượng thuê AD. Ứng dụng thứ hai sử dụng mã sau để truy xuất mã thông báo truy cập:

var clientCredentials = new ClientCredential(ConfigurationManager.AppSettings["AD_ClientID"], ConfigurationManager.AppSettings["AD_Client_AccessKey"]); 
var authContext = new AuthenticationContext(string.Format(ConfigurationManager.AppSettings["AD_Tenant_Login_Url"], ConfigurationManager.AppSettings["AD_Tenant_Id"]));    
var result = authContext.AcquireTokenAsync(ConfigurationManager.AppSettings["AD_Resource"], clientCredentials); 
if (result == null) 
{ 
    throw new InvalidOperationException("Could not get the token"); 
} 
return result.Result; 

Kết quả là mã thông báo truy cập có các thuộc tính khác nhau. Bây giờ là ứng dụng thứ hai, truy xuất mã thông báo truy cập với quyền truy cập vào tài nguyên táo, sau đó nó sẽ chuyển đến ứng dụng Apple trong tiêu đề ủy quyền.

Authorization:bearer TokenString 

Ứng dụng Apple có thuộc tính Authorize được thêm vào bộ điều khiển. Ứng dụng này được cấu hình với Owin với ứng dụng OAuth với đoạn mã sau

public void ConfigureAuth(IAppBuilder app) 
    { 
     app.UseWindowsAzureActiveDirectoryBearerAuthentication(
      new WindowsAzureActiveDirectoryBearerAuthenticationOptions 
      { 
       Tenant = ConfigurationManager.AppSettings["ida:Tenant"], 
       TokenValidationParameters = new TokenValidationParameters 
       { 

        ValidAudience = ConfigurationManager.AppSettings["ida:Audience"] 
       }, 
      }); 
    } 

Xin lưu ý rằng các thẻ truy cập được lấy từ ứng dụng thứ hai sử dụng AppID riêng của mình và bí mật quan trọng; trong khi ứng dụng khác (Apple) sử dụng AppId và khóa bí mật của riêng nó để xác thực mã thông báo.

Vì vậy, vấn đề của tôi là, ứng dụng APPLE luôn trả về 401 không cho phép đang

+0

trong khi tôi không nhận được bất kỳ câu trả lời nào, tôi có nên thay đổi thẻ, khuyên không? –

+0

Tôi đang theo dõi chủ đề này từ [đây] (https://social.msdn.microsoft.com/Forums/azure/en-US/af1f1ddc-649b-4b35-9e16-ced582380e6c/azure-ad-authentication-between-applications ? forum = WindowsAzureAD), vui lòng cho tôi biết nếu bạn có bất kỳ sự cố nào. –

+0

@Fei Xue, cảm ơn bạn đã bắt tôi ... Tôi đã trả lời câu trả lời của bạn ... –

Trả lời

0

Để ở trên, câu hỏi, câu trả lời là, ID tài nguyên (trong yêu cầu token) và ID Đối Tượng (trong xác nhận mã thông báo thứ hai ứng dụng) không khớp. Giữ cho những người cùng giải quyết vấn đề.

Sau đó, tôi chạy vào một vấn đề khác, mà tôi đã mô tả here

Dường như, Nếu tôi làm việc với Azure Portal mới (mà vẫn còn trong phiên bản xem trước), các AD token không bao gồm "Roles" trường trong JWT token. Nếu tôi làm theo cùng một quy trình trong Cổng thông tin cũ hơn để định cấu hình ứng dụng, thì AD bao gồm trường "Roles" trong mã thông báo JWT và kịch bản thực thi như mong đợi.

Tôi nên tránh sử dụng cổng thông tin Azure mới cho các tính năng xem trước ít nhất!

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