Sử dụng AOP đối với các mối quan tâm an ninh

Một phần của tài liệu Phương pháp hướng đối tượng và phân tích thiết kế an ninh hệ thống (Trang 64 - 66)

4.3 .Giải pháp cài đặt mối quan tâm an ninh

4.3.2.Sử dụng AOP đối với các mối quan tâm an ninh

Việc đưa các mối quan tâm an ninh vào chương trình thơng qua AOP là một giải pháp đã được nhiều tác giả nghiên cứu [4] [5].

Trong bài toán của chúng ta, từ biểu đồ hoạt động của các trường hợp sử dụng, ta xác định được các điểm cắt (pointcut) mà các mối quan tâm an ninh của chúng ta sẽ được xen vào. Chúng ta xây dựng các quy ước đặt tên lớp như sau:

• Mỗi một nghiệp vụ của người dùng thường gồm một số bước và mỗi bước sẽ xuất hiện một yêu cầu (vật lý) gửi tới máy chủ. Ví dụ, với trường hợp MS01_01 thì các u cầu là:

1. Hiển thị màn hình (MS01_01_01)

2. Gửi dữ liệu lên (MS01_01_02)

Phương pháp hướng đối tượng và phân tích thiết kế anh ninh hệ thống 61

Để rõ hơn các yêu cầu thì ta có thể nhìn vào bảng mơ tả trường hợp sử dụng. Mỗi mũi tên vẽ từ tác nhân sang hệ thống là một yêu cầu. Tuy nhiên, ta quy ước đối với yêu cầu hiển thị màn hình thì trứoc và sau là cùng số, vì đó là u cầu hiển thị cùng một màn hình.

• Các lớp thực hiện các nghiệp vụ của người sử dụng sẽ đặt tên là UC_*BLogic, và mỗi yêu cầu sẽ là một lớp.

• Trong mỗi lớp chỉ có một phương thức tên làexecute. Ví dụ cụ thể ta cóMS01_01_01BLogic là tên lớp và execute là tên phương thức.

Với các quy ước như vậy, ta định nghĩa các điểm cắt như ví dụ mã 4.5.

Ví dụ mã 4.5: Định nghĩa mối quan tâm và điểm cắt

1 @Aspect

2 abstract c l a s s S e c u r i t y A s p e c t {

3 @Before ( " bean (∗BLogic ) "

4 public void c h e c k ( J o i n P o i n t j p ) { 5 O b j e c t t a r g e t = j p . g e t T a r g e t ( ) ; 6 C l a s s <? extends A b s t r a c t S e c u r i t y G u a r d > t a r g e t C l a s s = 7 ( C l a s s <? extends A b s t r a c t S e c u r i t y G u a r d >) t a r g e t . g e t C l a s s ( ) ; 8 S t r i n g className = t a r g e t C l a s s . getCanonicalName ( ) ; 9 S t r i n g u c I d = className . s u b s t r i n g ( 4 1 , 4 7 ) ; 10 A b s t r a c t S e c u r i t y G u a r d [ ] g u a r d s = 11 A b s t r a c t S e c u r i t y G u a r d . getGuards ( u c I d ) ; 12 f o r( A b s t r a c t S e c u r i t y G u a r d g : g u a r d s ) { 13 g . c h e c k ( ) ;// t h r o w u n a u t h o r i z e d e x c e p t i o n i f any 14 } 15 } 16 }

Trong phương thức check(), chúng ta thực hiện các kiểm tra cần thiết và tạo ngoại lệ truy cập (UnauthorizedException) khi người dùng hiện tại không được phép thực hiện hành động đó.

Một phần của tài liệu Phương pháp hướng đối tượng và phân tích thiết kế an ninh hệ thống (Trang 64 - 66)