Mạng xã hội nodejs
Các ứng dụng chạy trên các nền tảng do Google Cloud quản lý, chẳng hạn như App Engine, có thể tránh việc quản lý xác thực người dùng và quản lý phiên bằng cách sử dụng Proxy nhận biết phần mềm nhận dạng (IAP) để kiểm soát quyền truy cập vào chúng. IAP không chỉ có thể kiểm soát quyền truy cập vào ứng dụng mà còn cung cấp thông tin về người dùng được xác thực, bao gồm địa chỉ email và số nhận dạng liên tục cho ứng dụng dưới dạng tiêu đề HTTP mới Show
mục tiêu
chi phíHướng dẫn này sử dụng các thành phần có thể thanh toán sau của Google Cloud
Để tạo ước tính chi phí dựa trên mức sử dụng dự kiến của bạn, hãy sử dụng công cụ tính giá. Người dùng Google Cloud mới có thể đủ điều kiện dùng thử miễn phí Khi bạn hoàn thành hướng dẫn này, bạn có thể tránh tiếp tục thanh toán bằng cách xóa các tài nguyên bạn đã tạo. Để biết thêm thông tin, xem Trước khi bắt đầu
Hướng dẫn này sử dụng IAP để xác thực người dùng. Đây chỉ là một trong một số cách tiếp cận có thể. Để tìm hiểu thêm về các phương pháp khác nhau để xác thực người dùng, hãy xem phần Ứng dụng dành cho hướng dẫn này là một ứng dụng Hello world App Engine tối thiểu, với một tính năng không điển hình. thay vì "Xin chào thế giới", nó hiển thị "Xin chào Có thể thực hiện chức năng này bằng cách kiểm tra thông tin đã xác thực mà IAP thêm vào từng yêu cầu web mà nó chuyển đến ứng dụng của bạn. Có ba tiêu đề yêu cầu mới được thêm vào mỗi yêu cầu web đến ứng dụng của bạn. Hai tiêu đề đầu tiên là các chuỗi văn bản thuần túy mà bạn có thể sử dụng để xác định người dùng. Tiêu đề thứ ba là một đối tượng được ký bằng mật mã có cùng thông tin đó
Nếu bạn chắc chắn rằng ứng dụng được định cấu hình để chỉ các yêu cầu web trên internet mới có thể truy cập ứng dụng và không ai có thể tắt dịch vụ IAP cho ứng dụng, thì việc truy xuất ID người dùng duy nhất chỉ cần một dòng mã 5Tuy nhiên, một ứng dụng có khả năng phục hồi sẽ có thể xảy ra sự cố, bao gồm các vấn đề về môi trường hoặc cấu hình không mong muốn, vì vậy, chúng tôi khuyên bạn nên tạo một chức năng sử dụng và xác minh tiêu đề được ký bằng mật mã. Chữ ký của tiêu đề đó không thể giả mạo và khi được xác minh, có thể được sử dụng để trả về nhận dạng Tạo mã nguồn
Hiểu mãPhần này giải thích cách hoạt động của mã trong tệp 6. Nếu bạn muốn chạy ứng dụng, bạn có thể bỏ qua phầnĐoạn mã sau nằm trong tệp 6. Khi ứng dụng nhận được một 05, trường hợp chuyển đổi cho 06 được gọiHàm nhận giá trị tiêu đề xác nhận JWT mà IAP đã thêm từ yêu cầu đến và gọi một hàm để xác thực giá trị được ký bằng mật mã đó. Giá trị đầu tiên được trả về (địa chỉ email) sau đó được sử dụng trong một trang web tối thiểu mà nó tạo và trả về xác thực-người dùng/ứng dụng. js Xem trên GitHub 8Hàm 07 sử dụng hàm 08 từ 09 để xác minh rằng xác nhận đã được ký hợp lệ và để trích xuất thông tin tải trọng từ xác nhận. Thông tin đó là địa chỉ email của người dùng được xác thực và ID duy nhất liên tục cho người dùng. Nếu xác nhận không thể được giải mã, chức năng này sẽ ném và in một thông báo để ghi lại lỗiViệc xác thực xác nhận JWT yêu cầu biết chứng chỉ khóa công khai của thực thể đã ký xác nhận (trong trường hợp này là Google) và đối tượng mà xác nhận dành cho. Đối với ứng dụng App Engine, đối tượng là một chuỗi có thông tin nhận dạng dự án Google Cloud trong đó. Hàm này nhận các chứng chỉ đó và chuỗi đối tượng từ các hàm trước nó xác thực-người dùng/ứng dụng. js Xem trên GitHub 2Bạn có thể tra cứu tên và ID số của dự án Google Cloud và tự đặt chúng vào mã nguồn, nhưng hàm 80 thực hiện điều đó cho bạn bằng cách truy vấn dịch vụ siêu dữ liệu tiêu chuẩn có sẵn cho mọi ứng dụng App Engine. Vì dịch vụ siêu dữ liệu nằm bên ngoài mã ứng dụng nên kết quả đó được lưu trong một biến toàn cầu được trả về mà không cần phải tra cứu siêu dữ liệu trong các lần gọi tiếp theoxác thực-người dùng/ứng dụng. js Xem trên GitHub 4Dịch vụ siêu dữ liệu của Máy ứng dụng (và các dịch vụ siêu dữ liệu tương tự cho các dịch vụ điện toán đám mây khác của Google) trông giống như một trang web và được truy vấn bởi các truy vấn web tiêu chuẩn. Tuy nhiên, dịch vụ siêu dữ liệu thực sự không phải là một trang web bên ngoài, mà là một tính năng nội bộ trả về thông tin được yêu cầu về ứng dụng đang chạy, vì vậy sẽ an toàn khi sử dụng yêu cầu 81 thay vì yêu cầu 82. Nó được sử dụng để lấy số nhận dạng Google Cloud hiện tại cần thiết để xác định đối tượng dự định của xác nhận JWTxác thực-người dùng/ứng dụng. js Xem trên GitHub 7Việc xác minh chữ ký điện tử yêu cầu chứng chỉ khóa công khai của người ký. Google cung cấp một trang web trả về tất cả các chứng chỉ khóa công khai hiện đang được sử dụng. Các kết quả này được lưu vào bộ nhớ đệm phòng trường hợp cần dùng lại trong cùng một phiên bản ứng dụng Triển khai ứng dụngGiờ đây, bạn có thể triển khai ứng dụng rồi bật IAP để yêu cầu người dùng xác thực trước khi họ có thể truy cập ứng dụng
Bật IAPGiờ đây, phiên bản Máy ứng dụng đã tồn tại, bạn có thể bảo vệ phiên bản đó bằng IAP
Thêm người dùng được ủy quyền vào ứng dụng
Giờ đây, bất kỳ người dùng nào mà Google có thể xác thực đều có thể truy cập ứng dụng. Nếu muốn, bạn có thể hạn chế quyền truy cập hơn nữa bằng cách chỉ thêm một hoặc nhiều người hoặc nhóm làm hiệu trưởng
Truy cập ứng dụng
khái niệm xác thựcCó một số cách ứng dụng có thể xác thực người dùng của mình và hạn chế quyền truy cập chỉ đối với những người dùng được ủy quyền. Các phương thức xác thực phổ biến, giảm mức độ nỗ lực cho ứng dụng, được liệt kê trong các phần sau Tùy chọn Ưu điểm Nhược điểm Xác thực ứng dụng
Xác thực do ứng dụng quản lýVới phương pháp này, ứng dụng sẽ tự quản lý mọi khía cạnh xác thực người dùng. Ứng dụng phải duy trì cơ sở dữ liệu riêng về thông tin đăng nhập của người dùng và quản lý phiên người dùng, đồng thời ứng dụng cần cung cấp các chức năng để quản lý tài khoản và mật khẩu người dùng, kiểm tra thông tin đăng nhập của người dùng cũng như phát hành, kiểm tra và cập nhật phiên người dùng với mỗi lần đăng nhập được xác thực. Sơ đồ sau minh họa phương thức xác thực do ứng dụng quản lý Như thể hiện trong sơ đồ, sau khi người dùng đăng nhập, ứng dụng sẽ tạo và duy trì thông tin về phiên của người dùng. Khi người dùng đưa ra yêu cầu đối với ứng dụng, yêu cầu phải bao gồm thông tin phiên mà ứng dụng chịu trách nhiệm xác minh Ưu điểm chính của phương pháp này là nó độc lập và nằm dưới sự kiểm soát của ứng dụng. Ứng dụng thậm chí không cần phải có sẵn trên internet. Nhược điểm chính là ứng dụng hiện chịu trách nhiệm cung cấp tất cả chức năng quản lý tài khoản và bảo vệ tất cả dữ liệu thông tin xác thực nhạy cảm Xác thực bên ngoài với OAuth2Một giải pháp thay thế tốt để xử lý mọi thứ trong ứng dụng là sử dụng dịch vụ nhận dạng bên ngoài, chẳng hạn như Google, dịch vụ này xử lý tất cả thông tin và chức năng của tài khoản người dùng và chịu trách nhiệm bảo vệ thông tin xác thực nhạy cảm. Khi người dùng cố gắng đăng nhập vào ứng dụng, yêu cầu sẽ được chuyển hướng đến dịch vụ nhận dạng, dịch vụ này sẽ xác thực người dùng và sau đó chuyển hướng yêu cầu trở lại ứng dụng với thông tin xác thực cần thiết được cung cấp. Để biết thêm thông tin, hãy xem Sử dụng OAuth 2. 0 cho ứng dụng máy chủ web Sơ đồ sau minh họa xác thực bên ngoài bằng phương thức OAuth2 Quy trình trong sơ đồ bắt đầu khi người dùng gửi yêu cầu truy cập ứng dụng. Thay vì phản hồi trực tiếp, ứng dụng sẽ chuyển hướng trình duyệt của người dùng đến nền tảng nhận dạng của Google, nền tảng này sẽ hiển thị một trang để đăng nhập vào Google. Sau khi đăng nhập thành công, trình duyệt của người dùng được chuyển hướng trở lại ứng dụng. Yêu cầu này bao gồm thông tin mà ứng dụng có thể sử dụng để tra cứu thông tin về người dùng hiện đã được xác thực và ứng dụng hiện phản hồi cho người dùng Phương pháp này có nhiều ưu điểm cho ứng dụng. Nó ủy thác tất cả chức năng quản lý tài khoản và rủi ro cho dịch vụ bên ngoài, dịch vụ này có thể cải thiện khả năng đăng nhập và bảo mật tài khoản mà không cần phải thay đổi ứng dụng. Tuy nhiên, như được hiển thị trong sơ đồ trước, ứng dụng phải có quyền truy cập internet để sử dụng phương pháp này. Ứng dụng này cũng chịu trách nhiệm quản lý các phiên sau khi người dùng được xác thực Proxy nhận biết danh tínhCách tiếp cận thứ ba mà hướng dẫn này trình bày là sử dụng IAP để xử lý tất cả xác thực và quản lý phiên với bất kỳ thay đổi nào đối với ứng dụng. IAP chặn tất cả các yêu cầu web đối với ứng dụng của bạn, chặn bất kỳ yêu cầu nào chưa được xác thực và chuyển những yêu cầu khác qua dữ liệu nhận dạng người dùng được thêm vào từng yêu cầu Việc xử lý yêu cầu được hiển thị trong sơ đồ sau Yêu cầu từ người dùng bị chặn bởi IAP, chặn các yêu cầu không được xác thực. Các yêu cầu đã xác thực được chuyển đến ứng dụng, miễn là người dùng đã xác thực nằm trong danh sách người dùng được phép. Các yêu cầu được chuyển qua IAP có các tiêu đề được thêm vào để xác định người dùng đã thực hiện yêu cầu Ứng dụng không còn cần xử lý bất kỳ tài khoản người dùng hoặc thông tin phiên nào. Bất kỳ hoạt động nào cần biết mã định danh duy nhất cho người dùng đều có thể lấy mã đó trực tiếp từ mỗi yêu cầu web đến. Tuy nhiên, điều này chỉ có thể được sử dụng cho các dịch vụ điện toán hỗ trợ IAP, chẳng hạn như Máy ứng dụng và bộ cân bằng tải. Bạn không thể sử dụng IAP trên máy phát triển cục bộ Dọn dẹpĐể tránh phát sinh phí đối với tài khoản Google Cloud của bạn đối với các tài nguyên được sử dụng trong hướng dẫn này, hãy xóa dự án chứa tài nguyên hoặc giữ lại dự án và xóa từng tài nguyên
Nếu bạn dự định khám phá nhiều hướng dẫn và bắt đầu nhanh, thì việc sử dụng lại dự án có thể giúp bạn tránh vượt quá giới hạn hạn mức dự án |