Launch HN: SSOReady (YC W24) - Công nghệ giúp SAML SSO trở nên đơn giản và mã nguồn mở
(github.com/ssoready)- SSOReady là công cụ mã nguồn mở để thêm Enterprise SSO dựa trên SAML và Enterprise Directory Sync dựa trên SCIM vào sản phẩm, đồng thời cung cấp UI cấu hình được host để khách hàng có thể tự onboarding
- Công cụ lấy HTTP API làm nền tảng để có thể dùng với bất kỳ stack ứng dụng nào, đồng thời cung cấp các SDK mỏng cho TypeScript, Python, Go, Java, C#, Ruby và PHP
- Đăng nhập SAML được đơn giản hóa thành luồng triển khai gồm tạo URL chuyển hướng và đổi access code, còn SCIM là cách lấy danh sách người dùng bằng ID bên ngoài của tổ chức
- SSOReady hoạt động như một lớp middleware xác thực, không sở hữu người dùng cũng không yêu cầu thay đổi cơ sở dữ liệu người dùng hiện có, và có thể chọn cloud-hosted hoặc self-hosted
- Gói Enterprise cung cấp custom domain·branding, Management API và hỗ trợ SLA; giấy phép MIT giữ khả năng fork như một biện pháp kiềm chế việc tăng giá
Những gì SSOReady cung cấp
- SSOReady là dự án mã nguồn mở để thêm hỗ trợ SAML và SCIM vào sản phẩm
- Có ba thành phần chính
- SSOReady SAML: chức năng cần thiết để thêm SAML, tức Enterprise SSO, vào sản phẩm
- SSOReady SCIM: chức năng cần thiết để thêm SCIM, tức Enterprise Directory Sync, vào sản phẩm
- Self-serve Setup UI: UI được host để khách hàng tự onboarding cấu hình SAML hoặc SCIM
- Tài liệu bắt đầu nhanh được chia thành SAML Quickstart và SCIM Quickstart
- README giải thích rằng đa số người dùng có thể triển khai SAML và SCIM trong một buổi chiều, và chỉ cần hai dòng mã
Tính độc lập với stack và các lựa chọn triển khai
- SSOReady không bị ràng buộc vào stack ứng dụng cụ thể nào; các SDK theo ngôn ngữ chỉ là những wrapper mỏng trên HTTP API trực quan
- Các SDK được cung cấp gồm
- SSOReady hoạt động như một lớp middleware xác thực, không sở hữu người dùng và không yêu cầu thay đổi cơ sở dữ liệu người dùng hiện có
- Có thể chọn dùng instance được host trên cloud hoặc self-hosting
- Gói Enterprise cung cấp hỗ trợ SLA cho cả cloud lẫn self-hosting
Luồng triển khai SAML
- SAML, tức Enterprise SSO, gồm hai bước
- bước khởi đầu để chuyển hướng người dùng tới Identity Provider của công ty
- bước xử lý để xác định người dùng là ai rồi đăng nhập cho họ
- Để bắt đầu đăng nhập, dùng endpoint Get SAML Redirect URL
- Trong
organizationExternalId, có thể đưa vào bất kỳ ID nào mà sản phẩm đang dùng cho tổ chức, workspace, team, v.v. - ID đó được cấu hình trong SSOReady, và SSOReady sẽ theo dõi cấu hình SAML·SCIM của tổ chức tương ứng
- Trong
- Để xử lý đăng nhập, dùng endpoint Redeem SAML Access Code
- Trong handler của
/ssoready-callback, đổisamlAccessCodeđể nhậnemailvàorganizationExternalId - Sản phẩm chỉ cần dùng email được trả về để đăng nhập người dùng trong tổ chức tương ứng
- Trong handler của
- URL endpoint
/ssoready-callbackđược cấu hình trong SSOReady
Luồng triển khai SCIM
- SCIM, tức Enterprise Directory Sync, được giới thiệu là cách lấy danh sách nhân viên của khách hàng theo kiểu offline
- Khi lấy nhân viên của khách hàng, dùng endpoint List SCIM Users
- Yêu cầu sử dụng
organizationExternalId, và phản hồi bao gồmscimUserscùngnextPageToken - Mỗi người dùng SCIM có các giá trị như
email,deleted,attributes; sản phẩm có thể dựa vào đó để tạo hoặc xử lý người dùng
Tính năng Enterprise và triết lý dự án
- Có thể dùng các tính năng mở rộng trong gói Enterprise
- Custom Domains & Branding: chạy SSOReady trên domain do người dùng kiểm soát và tùy biến trải nghiệm SAML·SCIM theo thương hiệu
- Management API: tự động hóa ở quy mô lớn các tác vụ liên quan đến SAML và SCIM theo cách lập trình được
- Enterprise Support: hỗ trợ SLA, bao gồm cả triển khai self-hosting
- Tiền đề của dự án là mọi sản phẩm bán phần mềm cho doanh nghiệp đều nên hỗ trợ Enterprise SSO, vì điều này mang lại lợi ích bảo mật lớn cho khách hàng
- Dự án cho rằng các thư viện SAML mã nguồn mở hiện có thường thiếu tài liệu và gây khó hiểu; SSOReady hướng đến trải nghiệm triển khai rõ ràng và an toàn theo mặc định
- Theo quan điểm rằng việc tùy tiện tăng mạnh giá phần mềm bảo mật là không thể chấp nhận, SSOReady được phát hành theo giấy phép MIT
- Các vấn đề bảo mật được hướng dẫn báo cáo về
security@ssoready.com
1 bình luận
Ý kiến trên Hacker News
Chỉ có thể chúc may mắn. Trước đây tôi từng tự xây IdP, triển khai đủ thứ như đăng nhập một lần, đăng xuất một lần, cấp phát người dùng, v.v., và khi nó thực sự chạy thì đúng là kỳ diệu đến mức phải bật cười
Tôi đã tích hợp với đủ loại service provider và cả các IdP khác, tính năng cũng ổn, nhưng có một điểm chắc chắn là việc này chưa từng là không đau đớn
Dù có làm ra IdP tốt nhất thế giới thì phía bên kia vẫn là hộp đen, nên rất nhiều lúc payload bị gửi vào khoảng không rồi bạn không thể biết vì sao nó lại bị xử lý như vậy
Hơn nữa, bên tích hợp thường cũng không hiểu luồng SAML, payload, thậm chí cả tính năng SAML trong chính stack của họ, nên mình vừa phải dạy họ vừa phải tự học hệ thống đó
Phần lớn công việc không phải là lo về chữ ký hay định dạng, mà là chẩn đoán hộp đen và rơi vào hố đen quản lý chứng chỉ bất tận
Đặc biệt IPSec để lại nhiều vết sẹo; làm việc với một “kỹ sư mạng” không mở nổi lấy một kết nối TCP để kiểm tra xem đường hầm VPN còn sống không khiến tôi chỉ biết nóng ruột tự hỏi “liệu có tích hợp được với bên kia không?”
Cuối cùng vẫn phải học hệ thống đối tác càng nhanh càng tốt để phán đoán xem cấu hình có đúng không, rồi tìm ra những vấn đề tích hợp không thể tránh khỏi. Gần như lúc nào nguyên nhân cũng là tường lửa ở đâu đó
Việc các thiết bị enterprise đổi thuật ngữ chuẩn thành từ ngữ riêng của họ cũng là vấn đề, nên phần lớn việc học thực chất là dựng một viên đá Rosetta trong đầu xem “appliance” của đối tác gọi thuật ngữ này hay thuật ngữ kia là gì
Có mail server nhận rất tốt, nhưng cũng có nơi chạy chính sách kỳ quặc và danh sách chặn cực nghiêm, lại còn quản lý uy tín riêng theo domain hoặc người gửi
Có lẽ mục đích là để tạo doanh thu, điều đó tự nó không sao, nhưng lần sau nên trau chuốt cách diễn đạt hơn
Trông rất hay. Với tư cách người từng triển khai SAML, tôi thấy nó thực sự đau khổ, còn công cụ này có vẻ dễ thở hơn nhiều
Tuy vậy tôi hơi lo về giá. Vì chúng tôi sẽ phải xây hệ thống của mình trên công cụ này, nên nếu sau này công ty phá sản hoặc đổi chính sách giá theo hướng bất lợi cho chúng tôi thì sẽ đột nhiên phát sinh một công việc kỹ thuật lớn là phải viết lại SSO
Nếu họ cung cấp sản phẩm hosted miễn phí thì khả năng cuối cùng phá sản hoặc đổi giá có vẻ khá cao
Với người cần gắn SSO vào dự án hiện tại trong 6~12 tháng tới như tôi, nếu ngoài “hiện đang miễn phí” và “chưa rõ nên cứ email cho chúng tôi” mà có một gói trả phí trông bền vững, thì sẽ dễ thuyết phục cả team hơn nhiều
Cũng đừng quên rằng một trong các lựa chọn là “gọi điện cho nhà sáng lập”
Trong thực tế như vậy, nếu ở công ty có người cần SAML thì có lẽ việc trả khoảng một nửa chi phí của một ứng dụng SaaS đơn lẻ chỉ cho tính năng này cũng là hợp lý
[1]: https://sso.tax/
Không có nghĩa là không thể xây doanh nghiệp vững chắc bằng mã nguồn mở. Red Hat đã làm được, nhưng phải đi theo mô hình đó chứ không phải mô hình gọi vốn VC giai đoạn seed
Có thể chúng tôi không thuyết phục được mọi người về logic thương mại, nhưng đây là một canh cược có tính toán rằng việc cho miễn phí hào phóng sẽ có lợi về dài hạn
Chúng tôi tin sản phẩm này sẽ tạo được niềm tin với developer và về sau sẽ trở thành một kênh phân phối hiệu quả. Chiến lược mã nguồn mở thương mại không kiếm tiền ở giai đoạn đầu là chuyện khá phổ biến
May mắn là cũng có một số nhà đầu tư mạo hiểm sẵn sàng ủng hộ những công ty sở hữu sản phẩm mã nguồn mở thương mại được ưa chuộng
Chúng tôi vẫn là công ty giai đoạn đầu, sẽ tiếp tục đào sâu sản phẩm hiện có và theo thời gian sẽ ra thêm sản phẩm mới. Các tính năng mới và sản phẩm mới sẽ được tính phí, và chúng tôi thấy ổn nếu phải mất vài năm mới đạt doanh thu hay dòng tiền đáng kể
Đáng khen khi họ phát hành dưới dạng mã nguồn mở và ra mắt một dịch vụ dễ dùng
Ngoài ra, nếu đây trở thành một implementation phổ biến và chất lượng tốt, thì các service provider khác cũng có thể dễ tích hợp hơn với người dùng phần mềm này
Tôi đã nhiều lần tự tay triển khai tích hợp SSO cho F500 từ đầu, và vì mỗi bên đều tùy biến nên dù cùng gọi là “SAML” cũng không nhất thiết tương tác được với nhau. Với phần mềm kiểu này thì có thể mặc định sẽ chạy
Tôi cũng tò mò họ sẽ duy trì bảo mật tốt đến đâu khi cung cấp hosted SSO miễn phí để khách hàng không bị xâm phạm thông qua phía họ
Ngoài ra, đây sẽ là điểm lỗi duy nhất cho toàn bộ khách hàng, nên tôi cũng muốn biết tầng miễn phí có đảm bảo uptime không. Và liệu họ có thể cung cấp hosted với mức giá startup chịu được cho những bên muốn hosted nhưng vẫn cần SLA hay không
Về SOC2, chúng tôi đang làm việc với Oneleet, và dù ai cũng biết SOC2 phần nào mang tính trình diễn, chúng tôi cũng đang thực hiện kiểm thử xâm nhập khá kỹ. Nếu muốn, tôi có thể gửi kết quả qua email
Thực tế là chúng tôi là kiểu công ty bắt buộc phải làm chuyện này cho ra hồn
Với đảm bảo uptime cho tầng miễn phí, chúng tôi dự định thỏa thuận theo từng trường hợp cụ thể và sẽ tùy vào nhu cầu. Chúng tôi xem các cam kết này khá nghiêm túc nên rất cẩn trọng khi hứa hẹn
Chúng tôi không định làm business dịch vụ, cũng không muốn kiếm tiền bằng “hỗ trợ cao cấp”. Tuy vậy nếu muốn SLA thì sẽ có một khoản phí nhỏ
Câu hỏi “liệu nhà cung cấp đám mây có lấy mất khách đang dùng phần mềm này không” thì mong bạn diễn đạt lại một chút
Có vẻ trở ngại lớn nhất của SAML hiện nay là tích hợp với sản phẩm SaaS. Tôi đã nhiều lần phải qua lại email với đội hỗ trợ, thậm chí có nhà cung cấp còn gửi nguyên một file PDF 204 trang chỉ để nói về cấu hình SSO
Việc ánh xạ thuộc tính vẫn còn rất lộn xộn, thật ngạc nhiên là trải nghiệm người dùng đến giờ vẫn tệ như vậy
Đúng lúc, chúng tôi vừa ra mắt một tính năng cho chính vấn đề này. Không cần tạo PDF 204 trang nữa; bạn có thể tạo URL cấu hình trong SSOReady và gửi cho khách hàng, để họ vào đó tự thiết lập kết nối SAML với sản phẩm qua giao diện tự phục vụ
https://ssoready.com/docs/idp-configuration/enabling-self-se...
Một trong những khó khăn lớn nhất là người dùng phải lôi kéo một bộ phận khác, nơi thực sự sở hữu hệ thống SSO, và bộ phận đó thường không có nhiều động lực để làm gấp nên ticket cứ bị kéo dài
Điều đó cũng khiến chúng tôi trông có vẻ là bên gây khó dễ vì phải yêu cầu khách hàng cung cấp thông tin cụ thể
Hay đấy. Tôi tò mò về đoạn “có kế hoạch kiếm tiền sau này bằng cách làm các tính năng bổ sung cho doanh nghiệp lớn có yêu cầu phức tạp”
Không biết trong quá trình nộp YC, chỉ như vậy đã đủ để được nhận chưa, và họ coi trọng mô hình kinh doanh đến mức nào khi quyết định đầu tư
Một trong những lý do chúng tôi thoải mái với gói miễn phí hào phóng là vì sự thật cơ bản rằng việc giúp các công ty SaaS hỗ trợ đăng nhập SAML không phải là một thị trường quá lớn. Dù sao thì chúng tôi cũng phải kiếm tiền từ sản phẩm khác
“Kiếm tiền từ tính năng bổ sung” là nói về sản phẩm SAML hiện tại, nhưng chúng tôi cũng dự định ra mắt các sản phẩm khác
Mục tiêu dài hạn là xây dựng một công ty giống Auth0 nhưng mã nguồn mở và thân thiện với nhà phát triển hơn
Tôi đang tìm một giải pháp thay thế tiết kiệm chi phí hơn WorkOS nên đúng lúc thật. Tôi đang xây cổng xác minh dữ liệu doanh nghiệp và sẽ thử dùng
Tôi muốn biết có hướng dẫn tham khảo ngay cho việc tích hợp với Entra ID không. Có thật là chỉ cần endpoint API là được à?
Đúng vậy. Phần code bạn cần viết là chung cho mọi IdP, còn khác biệt theo từng IdP sẽ được xử lý ở giá trị cấu hình của từng khách hàng
Ví dụ, gần đây chúng tôi đã sắp xếp lại tài liệu riêng cho Entra: https://ssoready.com/docs/idp-configuration/guides-for-commo...
Tôi muốn biết liệu như vậy đã đáp ứng đúng nhu cầu bạn cần chưa
Chúng tôi có chiết khấu theo sản lượng tự động cho khách hàng trả theo mức sử dụng, và các gói năm hoặc hợp đồng tùy chỉnh còn có thể rẻ hơn nữa. Chúng tôi cũng cung cấp tín dụng miễn phí cho các công ty giai đoạn đầu
Nếu muốn trao đổi, bạn có thể liên hệ qua mg@workos.com
Hiện tại WorkOS đang được hàng trăm công ty sử dụng, trong đó có nhiều startup: https://workos.com/startups
Ở công ty trước tôi từng triển khai tích hợp SSO, nhưng SAML có vẻ quá đau khổ nên chúng tôi chỉ làm OIDC2
Tôi không biết bây giờ còn vậy không, nhưng có một thời gian Okta không cho phép dùng OIDC cho SSO trong các tích hợp Okta sử dụng SCIM, mà bắt buộc phải dùng SAML cho SSO
Chúng tôi lách bằng cách tạo hai tích hợp Okta riêng, một cho SSO và một cho SCIM. Giải thích chuyện này với bộ phận CNTT của khách hàng lúc nào cũng phiền, nhưng chẳng ai phàn nàn nên chúng tôi không cần phải triển khai SAML
Trông rất ổn. Tôi muốn biết có kế hoạch bổ sung SCIM không
SAML cũng tốt, nhưng theo kinh nghiệm của tôi, một trong những lý do chính khiến khách hàng doanh nghiệp lớn muốn SSO là để tự động hủy cấp quyền trên tất cả ứng dụng khi nhân viên nghỉ việc. Muốn làm vậy thì cần SCIM
Nếu có cả SAML lẫn SCIM, hoặc thậm chí chỉ một tập con nhỏ của SCIM thôi, thì gần như tôi sẽ chọn mà không cần đắn đo. Các dịch vụ khác đều đóng, đắt vô lý, còn tự triển khai thì cực kỳ đau đầu
Nói thật thì IETF làm SCIM khá ổn. Nó không kỳ quặc như SAML. Theo kinh nghiệm của tôi, phần khó nhất của tích hợp SCIM là khớp cấu hình theo từng IdP
Cũng như với SAML, Okta, Microsoft và OneLogin gọi cùng một thứ bằng những thuật ngữ hoàn toàn khác nhau
Một tính năng mà chúng tôi rất mong chờ là nút tạo liên kết cấu hình để gửi cho khách hàng. Qua liên kết đó, khách hàng có thể tự thiết lập cấu hình SAML+SCIM theo kiểu tự phục vụ
Hiện giờ nó đã hoạt động với SAML, và rất tiện vì không cần phải viết riêng tài liệu cho từng IdP để giải thích thuật ngữ kỳ quặc và giao diện khác thường của từng sản phẩm
Chúc mừng ra mắt. So với SAML Jackson của BoxyHQ[1] thì thế nào?
[1]: https://github.com/boxyhq/jackson
Về cơ bản có hai lý do khiến chúng tôi thích cách tiếp cận của mình hơn
Thứ nhất, BoxyHQ muốn dùng SAML-over-OAuth. Chúng tôi cũng hỗ trợ điều đó, đặc biệt để tương thích với NextAuth, nhưng không phải lúc nào chúng tôi cũng thấy nó hữu ích
Thứ hai, tôi nghĩ dịch vụ của chúng tôi dễ dùng hơn. Điều phàn nàn chúng tôi nghe nhiều nhất từ người dùng và khách hàng là sự phức tạp, nên chúng tôi đã nỗ lực rất nhiều để làm cho SAML rõ ràng và đơn giản. Cuối cùng thì có đạt được tiêu chuẩn đó hay không vẫn là điều do người dùng đánh giá
Tôi đang viết chính sách tùy chỉnh đầu tiên cho B2C IdP của Microsoft, và đó là một quá trình đầy đau đớn
Nếu có thể làm cho xác thực và SSO bớt đau khổ hơn, thì thế giới thực sự có thể trở nên tốt đẹp hơn. Ứng dụng sẽ an toàn hơn, mọi người sẽ bớt bực bội khi sử dụng, và mức độ căng thẳng của những người như tôi cũng giảm đi
http://id.atlassian.com