Các giải pháp lập trình CSharp- P66
Số trang: 10
Loại file: pdf
Dung lượng: 2.62 MB
Lượt xem: 3
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Các giải pháp lập trình CSharp- P66: Các giải pháp lập trình C# khảo sát chiều rộng của thư viện lớp .NET Framework và cung cấp giải pháp cụ thể cho các vấn đềthường gặp. Mỗi giải pháp được trình bày theo dạng “vấn đề/giải pháp” một cách ngắn gọn và kèm theo là các ví dụ mẫu.
Nội dung trích xuất từ tài liệu:
Các giải pháp lập trình CSharp- P66 541 Chương 13: Bảo mật Thread.CurrentPrincipal. Việc này sẽ ngăn bộ thực thi gán các đối tượng IPrincipal mặc định hoặc tạo ra các đối tượng mới dựa trên chính sách principal. Bảng 13.4 Các thành viên thuộc kiểu liệt kê PrincipalPolicy Tên thành viên Mô tả Không có đối tượng IPrincipal nào được tạo ra, NoPrincipal Thread.CurrentPrincipal trả về một tham chiếu null. Một đối tượng System.Security.Principal. UnauthenticatedPrincipal GenericPrincipal rỗng được tạo ra và được gán cho Thread.CurrentPrincipal. Một đối tượng WindowsPrincipal (mô tả người WindowsPrincipal dùng Windows đã đăng nhập) được tạo ra và được gán cho Thread.CurrentPrincipal.Bất kể sử dụng phương pháp nào để thiết lập IPrincipal cho tiểu trình hiện hành, bạn cũngphải làm như thế trước khi sử dụng các yêu cầu bảo mật RBS, nếu không thông tin về ngườidùng (IPrincipal) sẽ không có hiệu lực để bộ thực thi có thể xử lý yêu cầu. Bình thường, khichạy trên nền Windows, bạn thiết lập chính sách principal của một miền ứng dụng làPrincipalPolicy.WindowsPrincipal để thu lấy thông tin về người dùng Windows:// Thu lấy một tham chiếu đến miền ứng dụng hiện hành.AppDomain appDomain = System.AppDomain.CurrentDomain;// Cấu hình miền ứng dụng hiện hành sao cho sử dụng các// principal dựa-trên-Windows.appDomain.SetPrincipalPolicy( System.Security.Principal.PrincipalPolicy.WindowsPrincipal);File RoleBasedSecurityExample.cs (trong đĩa CD đính kèm) minh họa cách sử dụng các yêucầu RBS bắt buộc và khai báo. Phần thứ nhất trình bày ba phương thức được bảo vệ bằng cácyêu cầu RBS bắt buộc. Nếu đối tượng Thread.CurrentPrincipal không thỏa các đòi hỏi về tênngười dùng và tư cách thành viên, yêu cầu sẽ ném ngoại lệ SecurityException.public static void ProtectedMethod1() { // Một yêu cầu bảo mật bắt buộc dựa-trên-vai-trò: principal // hiện hành mô tả một định danh với tên là nnbphuong81, // các vai trò của principal là không quan trọng. System.Security.Permissions.PrincipalPermission perm = new System.Security.Permissions.PrincipalPermission (@MACHINE\nnbphuong81, null); perm.Demand();542Chương 13: Bảo mật}public static void ProtectedMethod2() { // Một yêu cầu bảo mật bắt buộc dựa-trên-vai-trò: principal // hiện tại là một thành viên của vai trò Managers hay // Developers. Khi sử dụng PrincipalPermission, bạn chỉ có thể diễn // tả mối quan hệ OR. Đó là vì phương thức PrincipalPolicy.Intersect // luôn trả về một quyền rỗng trừ khi hai input là như nhau. // Tuy nhiên, bạn có thể sử dụng lôgic của mã lệnh để hiện thực // các điều kiện phức tạp hơn. Trong trường hợp này, tên của định // danh là không quan trọng. System.Security.Permissions.PrincipalPermission perm1 = new System.Security.Permissions.PrincipalPermission (null, @MACHINE\Managers); System.Security.Permissions.PrincipalPermission perm2 = new System.Security.Permissions.PrincipalPermission (null, @MACHINE\Developers); perm1.Union(perm2).Demand();}public static void ProtectedMethod3() { // Một yêu cầu bảo mật bắt buộc dựa-trên-vai-trò: principal // hiện tại mô tả một định danh với tên là nnbphuong81 và // là một thành viên của vai trò Managers. System.Security.Permissions.PrincipalPermission perm = new System.Security.Permissions.PrincipalPermission (@MACHINE\nnbphuong81, @MACHINE\Managers); perm.Demand();}Phần thứ hai trình bày ba phương thức được bảo vệ bằng các yêu cầu RBS khai báo, tươngđương với các yêu cầu RBS bắt buộc vừa được trình bày ở trên: 543 Chương 13: Bảo mật// Một yêu cầu bảo mật khai báo dựa-trên-vai-trò: principal hiện tại// mô tả một định danh với tên là nnbphuong81, các vai trò của// principal là không quan trọng.[PrincipalPermission(SecurityAction.Demand, Name = @MACHINE\nnbphuong81)]public static void ProtectedMethod1() { /*...*/}// Một yêu cầu bảo mật khai báo dựa-trên-vai-trò: principal hiện tại// là một thành viên của vai trò Managers hay Developers. Bạn chỉ// có thể diễn tả mối quan hệ OR (không thể diễn tả mối quan hệ AND).// Tên của định danh là không quan trọng.[PrincipalPermission(SecurityAction.Demand, Role = @MACHINE\Managers)][PrincipalPermission(SecurityAction.Demand, Role = @MACHINE\Developers)]public static void ProtectedMethod2() { /*...*/}// Một yêu cầu bảo mật khai báo dựa-trên-vai-trò: principal hiện tại// mô tả một định danh với tên là nnbphuong81 và là một thành viên// của vai trò Managers.[PrincipalPermission(SecurityAction.Demand, Name = @MACHINE\nnbphuong81, Role = @MACHINE\Managers)]public static void ProtectedMethod3() { /*...*/}15. Giả nhận người dùng Windows Bạn muốn mã lệnh của bạn chạy trong ngữ cảnh của một người dùng Windows nào đó chứ không phải tài khoản người dùng hiện đang tích cực. Thu lấy đối tượng System.Security.Principal.WindowsIdentity mô tả người dùng Windows mà bạn cần giả nhận, rồi gọi phương thức Impersonate của đối tượng WindowsIdentity.Mỗi tiểu trình Windows đều có một access token kết ...
Nội dung trích xuất từ tài liệu:
Các giải pháp lập trình CSharp- P66 541 Chương 13: Bảo mật Thread.CurrentPrincipal. Việc này sẽ ngăn bộ thực thi gán các đối tượng IPrincipal mặc định hoặc tạo ra các đối tượng mới dựa trên chính sách principal. Bảng 13.4 Các thành viên thuộc kiểu liệt kê PrincipalPolicy Tên thành viên Mô tả Không có đối tượng IPrincipal nào được tạo ra, NoPrincipal Thread.CurrentPrincipal trả về một tham chiếu null. Một đối tượng System.Security.Principal. UnauthenticatedPrincipal GenericPrincipal rỗng được tạo ra và được gán cho Thread.CurrentPrincipal. Một đối tượng WindowsPrincipal (mô tả người WindowsPrincipal dùng Windows đã đăng nhập) được tạo ra và được gán cho Thread.CurrentPrincipal.Bất kể sử dụng phương pháp nào để thiết lập IPrincipal cho tiểu trình hiện hành, bạn cũngphải làm như thế trước khi sử dụng các yêu cầu bảo mật RBS, nếu không thông tin về ngườidùng (IPrincipal) sẽ không có hiệu lực để bộ thực thi có thể xử lý yêu cầu. Bình thường, khichạy trên nền Windows, bạn thiết lập chính sách principal của một miền ứng dụng làPrincipalPolicy.WindowsPrincipal để thu lấy thông tin về người dùng Windows:// Thu lấy một tham chiếu đến miền ứng dụng hiện hành.AppDomain appDomain = System.AppDomain.CurrentDomain;// Cấu hình miền ứng dụng hiện hành sao cho sử dụng các// principal dựa-trên-Windows.appDomain.SetPrincipalPolicy( System.Security.Principal.PrincipalPolicy.WindowsPrincipal);File RoleBasedSecurityExample.cs (trong đĩa CD đính kèm) minh họa cách sử dụng các yêucầu RBS bắt buộc và khai báo. Phần thứ nhất trình bày ba phương thức được bảo vệ bằng cácyêu cầu RBS bắt buộc. Nếu đối tượng Thread.CurrentPrincipal không thỏa các đòi hỏi về tênngười dùng và tư cách thành viên, yêu cầu sẽ ném ngoại lệ SecurityException.public static void ProtectedMethod1() { // Một yêu cầu bảo mật bắt buộc dựa-trên-vai-trò: principal // hiện hành mô tả một định danh với tên là nnbphuong81, // các vai trò của principal là không quan trọng. System.Security.Permissions.PrincipalPermission perm = new System.Security.Permissions.PrincipalPermission (@MACHINE\nnbphuong81, null); perm.Demand();542Chương 13: Bảo mật}public static void ProtectedMethod2() { // Một yêu cầu bảo mật bắt buộc dựa-trên-vai-trò: principal // hiện tại là một thành viên của vai trò Managers hay // Developers. Khi sử dụng PrincipalPermission, bạn chỉ có thể diễn // tả mối quan hệ OR. Đó là vì phương thức PrincipalPolicy.Intersect // luôn trả về một quyền rỗng trừ khi hai input là như nhau. // Tuy nhiên, bạn có thể sử dụng lôgic của mã lệnh để hiện thực // các điều kiện phức tạp hơn. Trong trường hợp này, tên của định // danh là không quan trọng. System.Security.Permissions.PrincipalPermission perm1 = new System.Security.Permissions.PrincipalPermission (null, @MACHINE\Managers); System.Security.Permissions.PrincipalPermission perm2 = new System.Security.Permissions.PrincipalPermission (null, @MACHINE\Developers); perm1.Union(perm2).Demand();}public static void ProtectedMethod3() { // Một yêu cầu bảo mật bắt buộc dựa-trên-vai-trò: principal // hiện tại mô tả một định danh với tên là nnbphuong81 và // là một thành viên của vai trò Managers. System.Security.Permissions.PrincipalPermission perm = new System.Security.Permissions.PrincipalPermission (@MACHINE\nnbphuong81, @MACHINE\Managers); perm.Demand();}Phần thứ hai trình bày ba phương thức được bảo vệ bằng các yêu cầu RBS khai báo, tươngđương với các yêu cầu RBS bắt buộc vừa được trình bày ở trên: 543 Chương 13: Bảo mật// Một yêu cầu bảo mật khai báo dựa-trên-vai-trò: principal hiện tại// mô tả một định danh với tên là nnbphuong81, các vai trò của// principal là không quan trọng.[PrincipalPermission(SecurityAction.Demand, Name = @MACHINE\nnbphuong81)]public static void ProtectedMethod1() { /*...*/}// Một yêu cầu bảo mật khai báo dựa-trên-vai-trò: principal hiện tại// là một thành viên của vai trò Managers hay Developers. Bạn chỉ// có thể diễn tả mối quan hệ OR (không thể diễn tả mối quan hệ AND).// Tên của định danh là không quan trọng.[PrincipalPermission(SecurityAction.Demand, Role = @MACHINE\Managers)][PrincipalPermission(SecurityAction.Demand, Role = @MACHINE\Developers)]public static void ProtectedMethod2() { /*...*/}// Một yêu cầu bảo mật khai báo dựa-trên-vai-trò: principal hiện tại// mô tả một định danh với tên là nnbphuong81 và là một thành viên// của vai trò Managers.[PrincipalPermission(SecurityAction.Demand, Name = @MACHINE\nnbphuong81, Role = @MACHINE\Managers)]public static void ProtectedMethod3() { /*...*/}15. Giả nhận người dùng Windows Bạn muốn mã lệnh của bạn chạy trong ngữ cảnh của một người dùng Windows nào đó chứ không phải tài khoản người dùng hiện đang tích cực. Thu lấy đối tượng System.Security.Principal.WindowsIdentity mô tả người dùng Windows mà bạn cần giả nhận, rồi gọi phương thức Impersonate của đối tượng WindowsIdentity.Mỗi tiểu trình Windows đều có một access token kết ...
Tìm kiếm theo từ khóa liên quan:
kinh nghiệm lập trình CSharp mẹo lập trình ngôn ngữ lập trình C giáo trình lập trình CSharp lập trình java lập trình căn bản CSharpGợi ý tài liệu liên quan:
-
Thủ thuật giúp giải phóng dung lượng ổ cứng
4 trang 210 0 0 -
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 202 0 0 -
101 trang 199 1 0
-
Tìm hiểu về ngôn ngữ lập trình C: Phần 1 - Quách Tuấn Ngọc
211 trang 149 0 0 -
142 trang 129 0 0
-
161 trang 129 1 0
-
Giáo trình Vi điều khiển PIC: Phần 1
119 trang 116 0 0 -
Bài giảng Phương pháp lập trình: Chương 9 - GV. Từ Thị Xuân Hiền
36 trang 109 0 0 -
Excel add in development in c and c phần 9
0 trang 107 0 0 -
78 trang 101 0 0