client gửi y/c truy cập vào protected resource trên server bằng cách sd the resource owner's credentials
Để mà có thể cho phép bên thứ 3 truy cập vào resource của mình thì server phải share credential của mình, điều này sẽ gây ra vài vấn đề và hạn chế:
- ứng dụng bên thứ 3 phải lưu trữ credential của resource server để sd trong tương lai, thường là clear text password .
- server phải support việc xác thực mật khẩu.
- ứng dụng bên thứ 3 thoải mái truy cập vào protected resources.
- resource owners ko thể thu hồi quyền truy cập của 1 bên thứ 3 riêng lẻ mà phải thu hồi quyền truy cập đối với all bên thứ 3 (bằng cách change password).
Với OAuth, client y/c truy cập resource đc hosted bởi resource server. thay vì sd resource owner's credentials để truy cập protected resources, thì client nhận 1 access token - là 1 credential biểu diễn 1 set các thuộc tính truy cập như là: scope, lifetime.
1. Roles
OAuth định nghĩa 4 roles:
- resource owner - là 1 thực thể có thể gán quyền truy cập protected resource. (RO)
- resource server- là server mà hosted cái protected resources. (RS)
- client - là ứng dụng truy vấn protected resource
- authorization server - là server issuing (phát hành) access token tới client (AS)
-> resource server và authorization server có thể cùng run trên 1 con server or tách ra.
1 authorization server có thể issue (phát hành) access token đc chấp nhận bởi nhiều resource server.
2. Protocol Flow
+--------+ +---------------+
| |--(1)- Authorization Request ->| Resource |
| | | Owner |
| |<-(2)-- Authorization Grant ---| |
| | +---------------+
| |
| | +---------------+
| |--(3)-- Authorization Grant -->| Authorization |
| Client | | Server |
| |<-(4)----- Access Token -------| |
| | +---------------+
| |
| | +---------------+
| |--(5)----- Access Token ------>| Resource |
| | | Server |
| |<-(6)--- Protected Resource ---| |
+--------+ +---------------+
Refresh Token - issue bởi authorization server: là cái credentials dùng để xin cấp lại access token khi mà access token hết hạn.
Nếu mà authorization server phát hành refresh token thì nó sẽ đc phát hành cùng với access token.
ko giống như access token, refresh token chỉ dùng với authorization server, và sẽ ko bao giờ gửi đến resource server.
+--------+ +---------------+ | |--(1)------- Authorization Grant --------->| | | | | | | |<-(2)----------- Access Token -------------| | | | & Refresh Token | | | | | | | | +----------+ | | | |--(3)---- Access Token ---->| | | | | | | | | | | |<-(4)- Protected Resource --| Resource | | Authorization | | Client | | Server | | Server | | |--(5)---- Access Token ---->| | | | | | | | | | | |<-(6)- Invalid Token Error -| | | | | | +----------+ | | | | | | | |--(7)----------- Refresh Token ----------->| | | | | | | |<-(8)----------- Access Token -------------| | +--------+ & Optional Refresh Token +---------------+
Access Token - là credentials sd để truy cập protected resources.
0 nhận xét:
Đăng nhận xét