Gần đây tôi đã bắt đầu với Google App Engine. Tôi định sử dụng Flask để phục vụ các trang web và API Endpoints, tốt nhất là với Endpoints-Proto-Datastore cho mọi thứ khác.Máy ứng dụng của Google: Xác thực điểm cuối khi xác thực tùy chỉnh hoặc ID mở được sử dụng
Ngay từ đầu, các cơ chế xác thực không phải của Google trên GAE có vẻ như họ cần một số công việc. Tôi đánh giá cao bất kỳ ánh sáng tỏ về những vấn đề tôi đã tìm thấy cho đến nay:
Tuỳ chỉnh xác thực
Nếu bạn có thể viết một nhà cung cấp ID mở như là một phần của ứng dụng, sử dụng giống như Python-OpenID và cũng thực hiện một người tiêu dùng trong cùng một quy trình làm việc để nó xuất hiện như đăng nhập thông thường. Bằng cách này, nó tích hợp độc đáo vào những gì API người dùng GAE cung cấp. Tôi đoán nếu điều này được thực hiện đúng, users.get_current_user() sẽ hoạt động tốt.
Nếu bạn muốn bỏ qua viết nhà cung cấp OpenID của riêng bạn và thay vào đó viết hệ thống xác thực email/mật khẩu bằng cách sử dụng Flask-Login tích hợp với NDB, điều đó cũng không sao. Tuy nhiên, một chút khó hiểu thông tin trong GAE documentation nói rằng tôi có thể tạo một đối tượng sử dụng như sau:
user = users.User("[email protected]")
Tuy nhiên, (không có user.put()
phương pháp ở đây) một users.get_current_user()
vẫn trả về None. Vậy việc sử dụng đối tượng người dùng sẽ như thế nào?
thiết bị đầu cuối Authorization
On bao gồm một user = yêu cầu trong phương pháp trang trí cho một Endpoint-Proto-Datastore cán API, OAuth dường như làm việc ngay lập tức - tất cả các bạn phải làm trong khi thử nghiệm nó trong các API explorer là bật khóa chuyển OAuth 2.0 và chọn Phạm vi Oauth 2.0 hợp lệ. Vậy điều đó có nghĩa là nếu chúng tôi triển khai nhà cung cấp OpenID tích hợp với API người dùng một cách chính xác, sẽ không đủ để sử dụng ma thuật OAuth của API điểm cuối?
Ở đây cũng vậy, có vẻ như việc xây dựng một đối tượng người dùng sẽ không giúp đáp ứng yêu cầu xác thực.
Xác thực tùy chỉnh/triển khai OpenID khác hoạt động như thế nào với xác thực/ủy quyền API điểm cuối?
Câu hỏi rất hay. Tôi muốn làm nhiều hơn hoặc ít hơn cùng một điều: thực hiện một số loại xác thực "cơ bản" với tên người dùng/mã thông báo. Đã thử với một servletFilter, nhưng có vẻ như servletFilters không hoạt động với/_ah/api-URL. – icyerasor