2013-08-30 22 views
6

Tôi thiết lập và ứng dụng MVC 4 và xác thực được thêm vào máy chủ Azure AD của chúng tôi như được nêu tại đây: http://msdn.microsoft.com/en-us/library/windowsazure/dn151790.aspxLàm cách nào để có được vai trò từ AD với Xác thực quảng cáo MVC Azure?

Xác thực hoạt động như mong đợi. Tuy nhiên, tôi không nhận được bất kỳ vai trò nào theo mặc định. Nên có một vài nhóm AD được tạo và tôi muốn sử dụng chúng để hạn chế ứng dụng thông qua thuộc tính [Authorize] trong MVC.

Tôi thực sự không thể tìm được nơi tốt để bắt đầu tìm hiểu điều này. Bất cứ ai có thể cho tôi một phác thảo hoặc chỉ cho tôi một hướng dẫn tốt?

Tôi nên đề cập đến rằng tôi không phải là quản trị viên cho tài khoản Azure của chúng tôi, vì vậy tôi cần phải có thể cho quản trị viên của chúng tôi biết phải làm gì nếu cần thiết lập bất kỳ bên nào.

Trả lời

9

Đầu tiên, mã thông báo được Azure AD trả về hiện không chứa xác nhận quyền sở hữu cho vai trò hoặc nhóm, do đó bạn cần lấy chúng từ API đồ thị. Thứ hai, vai trò trong Azure AD được trả về bởi Graph API không nhất thiết được dùng để sử dụng trong một ứng dụng ISV/LoB, và nói chung bạn nên sử dụng nhóm bảo mật để ủy quyền thay thế. Để thực hiện ủy quyền, bạn nên sử dụng các hoạt động checkMemberGroups hoặc getMemberGroups trong Graph API, đó là transitive và hợp lệ cho mục đích này.

Nếu bạn xem các tài nguyên sau theo thứ tự, tôi nghĩ câu hỏi của bạn sẽ được trả lời. Bạn sẽ học cách để thẩm định đồ thị, gọi nó, và cấu hình ứng dụng của bạn để sử dụng kết quả của các hoạt động nhóm để thực hiện ủy quyền:

6

Câu trả lời của Sean hơi lỗi thời. Bây giờ bạn có thể cấu hình Azure AD để nó sẽ bao gồm các nhóm hoặc các vai trò bên trong mã thông báo JWT để nó sẽ được bao gồm trong ClaimsPrincipal.Current.Claims để thuộc tính tiêu chuẩn [Authorize(Roles = "yourRoleName")] sẽ hoạt động.

Here là bài giới thiệu. Mà về cơ bản nói rằng bạn có hai lựa chọn:

  1. Sử dụng nhóm tuyên bố - bạn cần phải thay đổi groupMembershipClaims giá trị trong ứng dụng manifest và sau này trong ứng dụng mà bạn có thể kiểm tra ClaimsPrincipal.Current.FindFirst("groups").Value để xem trong nhóm những người sử dụng là (bạn chỉ nhận được id nhóm). Bạn có thể viết cho bạn thuộc tính Authorize để sử dụng nó.more info

  2. Xác định vai trò cho bạn ứng dụng và sau đó sử dụng mã bình thường để thử nghiệm nếu người dùng là trong vai trò:

    [PrincipalPermission(SecurityAction.Demand, Role = “yourRoleName”)]

    [Authorize(Roles = “yourRoleName”)]

    if (ClaimsPrincipal.Current.IsInRole(“yourRoleName”)) { //do something }

    Bạn cần phải chỉnh sửa vai trò trong bạn tệp kê khai của ứng dụng. Thông tin thêm herehere. Giá trị cần phải được đặt trong manifest được mô tả here

gì là thực sự lạ là bạn không thể gán nhiều hơn một vai trò cho nhóm từ trang web Azure. Bạn cần sử dụng azure graph api cho việc này.

Nếu bạn không thể thấy tab Users and Groups trong cổng Azure, bạn có thể cần Azure AD Basic hoặc Premium edition. Nếu bạn đang làm việc trên đăng ký azure miễn phí, bạn có thể sử dụng free Azure AD Premium trial để kiểm tra nội dung.

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