Từ giao thức OAuth đã tìm hiểu ở mục 2.3.1 thì việc tích hợp OAuth với CardSpace được thể hiện như trong Hình 2.11 và gồm các bước chính sau [15]:
1. UA → RP: Người dùng yêu cầu một trang đăng nhập từ RP
2. RP → UA: Một trang đăng nhập được RP trả lại. Trang đăng nhập này có chứa những thẻ cho phép gọi CardSpace và những trường và chính sách bảo mật của RP cũng được nhúng vào trong trang đăng nhập của RP trả về.
3. Extension → UA: Chương trình tích hợp sẽ thực hiện các bước sau:
1. Extension kiểm tra trang đăng nhập mà RP trả về cho UA để phát hiện xem RP có hỗ trợ CardSpace hay không. Nếu RP có hỗ tr thì chương trình tiếp tục xử lý còn nếu RP không hỗ trợ thì chương trình sẽ dừng lại. 2. Extension xem xét chính sách của RP để kiểm tra xem việc sử dụng thẻ
cá nhân có được chấp nhận hay không? Nếu có thì tiếp tục xử lý và nếu không thì cho CardSpace hoạt động bình thường.
3. Extension giữ lại các trường và những khai báo mà RP yêu cầu.
4. Extension khám phá ra giao thức mà RP sử dụng để giao tiếp là HTTP hoặc HTTPS.
5. Nếu HTTP được sử dụng , Extension sẽ thay đổi chính sách của RP để chính sách này bao gồm cả những trường được sử dụng trong thể OAuth (OAuthCard). Ví dụ, nếu URL của SP được lưu trữ trong trường “web page” của OAuthCard, thì Extension phải đảm bảo rằng chính sách bảo mật của RP bao gồm có thêm trường “web page”. Việc bổ sung những kiểu trường này cho RP để đảm bảo rằng những mã được cung cấp bởi SIIP sẽ chứa giá trị của nhừng trường này, những giá trị này sẽ được Extension sử dụng khi cần thiết.
4. Người dùng → UA: Trang đăng nhập của RP sẽ đưa ra gợi ý cho người dùng lựa chọn CardSpace. Việc lựa chọn này sẽ kích hoạt Selector nếu như thỏa mãn được các chính sách của RP.
Hình 2.11: Giao thức tích hợp giữa OAuth và CardSpace
5. Selector → InfoCards: Sau khi kiểm tra và thẩm định các chính sách của RP thì Selector sẽ hiển thị nổi bật những thẻ mà thỏa mãn với chính sách của RP. 6. Người dùng → Selector: Sau khi hiển thị những thẻ thỏa mãn với chính sách
của RP thì người dùng sẽ lựa chọn một thẻ cá nhân phù hợp nhất. Tuy nhiên, người dùng có thể tạo và chọn một thẻ cá nhân mới. Người dùng có thể chỉnh sửa những trường thông tin bên trong thẻ để sao cho thẻ được tạo ra thỏa mãn với những chính sách và yêu cầu của RP.
7. Selector ↔ SIIP: Selector sẽ tạo và gửi một yêu cầu token bảo mật SAML (RST - Request Security Token) tới SIIP. Khi SIIP nhận được yêu cầu thì sẽ trả lại một RSTR (Request Security Token Response).
8. Selector ↔ SIIP: Selector sẽ tạo và gửi một yêu cầu token bảo mật SAML (RST - Request Security Token) tới SIIP. Khi SIIP nhận được yêu cầu thì sẽ trả lại một RSTR (Request Security Token Response).
IdP Cardspace - enabled RP
HTTP yêu cầu trang login
User Agent
HTTP response (chứa policy RP Được nhúng trong thẻ Object) Plug-in xử lý và ngăn chặn một SAML token
User gọi Selector và chọn một IDcard Selector ↔ SIIP: Trao đổi RST và RSTR
Plug-in: Chặn RSTR, sinh và gửi một “OAuth request” Xác thực người dùng
Yêu người dùng ủy quyền Acess token
Plug-in: Sử dụng access token để lấy thuộc tính user
Plug-in: Khởi tạo và gửi SAML (RSTR và thuộc tính user) Từ chối hoặc cho phép truy cập
9. Selector → Extension/UA: Sau khi người sử dụng lựa chọn và gửi một OAuthCard phù hợp, thì không giống như trường hợp chuẩn, RSTR sẽ không được gửi tới RP ngay, thay vào đó Extension sẽ chặn RSTR và tạm thời lưu trữ RSTR lại. Nếu RP sử dụng HTTP: Extension sẽ sử dụng nội dung của RSTR để khởi tạo và xây dựng một yêu cầu OAuth, yêu cầu này sẽ được Extension chuyển tiếp tới một IdP phù hợp (địa chỉ IdP được khám phá và xác định từ RSTR). Nếu RP sử dụng HTTPS: Đầu tiên, Extension sẽ hỏi người dùng xem có muốn sử dụng giao thức tích hợp này hay không. Nếu người dùng không muốn sử dụng thì Extension sẽ dừng chương trình lại và cho phép CardSpace hoạt động bình thường. Nếu người dùng muốn sử dụng giao thức tích hợp này thì Extension sẽ hướng dẫn người dùng nhập vào URI của IdP. Sau khi người dùng đã nhập URI của IdP rồi thì Extension sẽ khởi tạo và xây dựng một yêu cầu OAuth, yêu cầu này sẽ được Extension chuyển hướng tới IdP (Địa chỉ IdP này được xác định dựa vào URI mà người dùng cung cấp).
10.IdP ↔ Người dùng: Sau khi Extension khởi tạo một yêu cầu OAuth và chuyển hướng người dùng tới IdP thích hợp. IdP sẽ xác thực người dùng. Nếu xác thực không thành công thì chương trình sẽ kết thúc ngay. Nếu IdP xác thực người dùng thành công thì sẽ đưa ra gợi ý cho người dùng về việc ủy quyền cho RP lấy và truy cập vào dữ liệu của người dùng trên IdP.
11.IdP → Extension/UA: Sau khi IdP xác thực người dùng thành công và người dùng đã ủy quyền cho RP truy cập vào dữ liệu thì IdP sẽ chuyển hướng UA trở lại với RP theo URI đã được cung cấp, bao gồm mã thông báo truy cập và các tham số cần thiết. Extension đọc và sử dụng thẻ truy cập (access token) đã được cung cấp để yêu cầu và lấy giá trị thuộc tính mà RP yêu cầu từ IdP thông qua giao tiếp trực giữa RP với IdP.
12.Extension/UA → RP: Sau khi lấy được các giá trị thuộc tính yêu cầu của người sử dụng từ RP, Extension xây dựng 1 mã thông báo SAML giống như CardSpace và gửi mã SAML này tới RP. Mã thông báo SAML này bao gồm các thuộc tính người dùng mà IdP cung cấp và chữ ký số của RSTR do SIIP phát ra (có chứa PPID), từ đó cho phép RP xác minh chữ ký mà SIIP phát ra.
13.RP → Người dùng: RP xác minh mã thông báo SAML (bao gồm xác minh chữ ký RSTR, PPID, nonce, time-stamps, v . v . ), và nếu thỏa mãn, RP cho phép truy cập. Nếu không thì chương trình sẽ kết thúc. Quá trình tích hợp giao thức OAuth vớ i CardSpace sẽ khác nhau tùy thuộc vào RP sử dụng HTTP hay HTTPS . Bởi vì , nếu RP sử dụng HTTPS thì Selector sẽ mã hóa RSTR trước khi gửi trả RSTR về cho UA . Nếu RSTR được mã hóa thì Extension sẽ không thể biết được thông tin b ên trong RSTR , từ đó sẽ không biết được địa chỉ URI của IdP . Nếu RP sử dụng HTTP thì RSTR sẽ
không được mã hóa , từ đó , Extension sẽ biết được những thông tin của thẻ CardSpace và xác định được địa chỉ URI của IdP .
Trong chương 2 luận văn đã trình bày chi tiết về nội dung, giao thức OpenID, OAuth, CardSpace và phương pháp tích hợp OpenID với CardSpace, OAuth với CardSpace. Từ đó làm tiền để cho việc tìm hiểu, phân tích và đưa ra phương pháp tích hợp OpenID và OAuth mở rộng với thẻ thông tin CardSpace ở chương 3.
Chương 3
TÍCH HỢP OPENID VÀ OAUTH MỞ RỘNG VỚI THẺ THÔNG TIN CARDSPACE
Chương này trình bày chi tiết nội dung, giao thức OpenID và OAuth mở rộng, phân tích những ưu điểm của OpenID và OAuth mở rộng so với OpenID, OAuth. Từ đó đưa ra mô hình và phương pháp tích hợp OpenID và OAuth mở rộng với thẻ thông tin CardSpace