{"id":10,"date":"2024-07-12T21:10:02","date_gmt":"2024-07-12T21:10:02","guid":{"rendered":"https:\/\/www.w3.org\/community\/fed-id\/?p=10"},"modified":"2024-07-12T21:10:02","modified_gmt":"2024-07-12T21:10:02","slug":"navigating-federated-authentication-the-scope-of-fedcm","status":"publish","type":"post","link":"https:\/\/www.w3.org\/community\/fed-id\/2024\/07\/12\/navigating-federated-authentication-the-scope-of-fedcm\/","title":{"rendered":"Navigating Federated Authentication: the Scope of FedCM"},"content":{"rendered":"\n<p>Many applications and services need to work through the browser to support SSO\/federated login, and yet federated login and tracking tools use the same web platform features and are indistinguishable from the browser\u2019s perspective. From <a href=\"https:\/\/datatracker.ietf.org\/doc\/draft-ietf-httpbis-rfc6265bis\/\" target=\"_blank\" rel=\"nofollow\">cookies<\/a> to <a href=\"https:\/\/privacycg.github.io\/nav-tracking-mitigations\/\" target=\"_blank\" rel=\"nofollow\">navigation-based tracking<\/a>, establishing controls at the user agent (aka, browser) level that still allows authentication protocols like OAuth, OIDC, and SAML to function across all their permutations is a big undertaking.&nbsp;<\/p>\n\n\n\n<p>One of the efforts underway to preserve the functionality of federated authentication is FedCM. FedCM is designed to help in federated authentication scenarios involving only two parties (or, more specifically, two origins). For those architectures that involve bouncing between multiple origins, also known as multi-hop scenarios, users may encounter a permission request to share data for each new pair-wise connection.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-us.googleusercontent.com\/docsz\/AD_4nXerixa9YBle1U9A37xnOlJH34Fd17HbgeFbiWCX-zE_cOT8W2xqCiJnm-PJZ9gjPSAL9cTm8DkqIKkM7MUIoiFIcpqyA1SG25sFrGgEowzt0Svm2OExZ8lldkGo0GUaYlt2s-ZE9bJ-hJu44JzgK7q5j0M?key=sYlvFC8lmaG5i5srOv0cxw\" alt=\"Simple diagram from the draft FedCM specification\" \/><\/figure>\n\n\n\n<p class=\"has-text-align-center\"><em>Simple diagram from the draft <a href=\"https:\/\/fedidcg.github.io\/FedCM\/\" target=\"_blank\" rel=\"nofollow\">FedCM specification<\/a><\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">FedCM&#8217;s Two-Origin Focus<\/h2>\n\n\n\n<p>The Federated Identity <a href=\"https:\/\/www.w3.org\/community\/fed-id\/\">Community<\/a> and <a href=\"https:\/\/www.w3.org\/groups\/wg\/fedid\/\">Working Groups<\/a>, the groups responsible for standardizing FedCM, remain focused primarily on enabling authentication protocols, invoked in an embedded context, to function in the absence of third-party cookies. The work is (currently) focused on the use case of authentication actions between only two origins; for example, a user signing into a news site with their identity provider account. Adding additional origins takes us into the realm of navigation-based tracking mitigation, and that\u2019s currently out of scope for FedCM. It\u2019s worth noting that these groups are working towards consensus, but there is still quite a bit to do before we agree to the final specification.\u00a0<\/p>\n\n\n\n<p>Authentication actions between two origins will likely cover a large number of use cases, particularly in the world of social logins using Google, Facebook, or enterprise, university, or government services. For use cases where multiple identity provider services are chained together\u2014something often found in higher education and the enterprise\u2014initial versions of FedCM apply only if you are using the <a href=\"https:\/\/github.com\/fedidcg\/FedCM\/blob\/10794f7327d3d44943b65c2013c4a7788b6c5cbe\/explorations\/HOWTO-chrome.md#continuation-api\" target=\"_blank\" rel=\"nofollow\">Continuation API<\/a> within FedCM, which can help address some of these more complex use cases. For example, an organization may use an MFA solution that is different from their IdP. These solutions are typically integrated using federation protocols, which often involve redirects across additional origins. The Continuation API would allow these flows to continue in a pop-up window. This pattern could also be used for some multi-hop federation use cases.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Bindings<\/h2>\n\n\n\n<p>FedCM aims to be protocol agnostic, but that doesn\u2019t mean that the protocols don\u2019t have to evolve to take advantage of FedCM. Aaron Parecki (Okta) is currently working on a <a href=\"https:\/\/github.com\/aaronpk\/oauth-fedcm-profile\" target=\"_blank\" rel=\"nofollow\">document<\/a> that will describe an OAuth binding for FedCM. This type of binding is necessary to provide FedCM with the data it needs to present the choice to the individual regarding the authentication action.&nbsp;<\/p>\n\n\n\n<p>A similar binding is necessary for SAML-based authentication flows. That work, however, is pending initiation as any further development of the SAML specification lacks a clear home; the <a href=\"https:\/\/www.oasis-open.org\/committees\/workgroup.php?wg_abbrev=security\" target=\"_blank\" rel=\"nofollow\">OASIS Security Services Technical Committee<\/a> (SSTC) responsible for maintaining the SAML protocol has been closed. The profile effort for SAML will need to happen in another standards organization, but grassroots efforts to define a SAML binding document could start today!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What FedCM Can Do Today<\/h2>\n\n\n\n<p>Any time the authentication process requires more than one hop to complete, regardless of protocol, FedCM is not the answer (yet). Implementors expecting FedCM to resolve navigation-based tracking will have to wait a long time while the community considers what will work best in this scenario. The community and working groups both recognize that breaking changes to URL navigation will break the web if not handled with extreme care.<\/p>\n\n\n\n<p>The web is moving towards much stricter privacy controls. These controls require informing individuals whenever their data is being processed by a third party. If you think of that as a core requirement for the web, then the challenge shifts to the user experience of a new request for permission at each and every hop across origins. While most recognize that as a poor user experience, we have not thought of a better solution at this time.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Continuing the Conversation<\/h2>\n\n\n\n<p>If you are interested in engaging with new ideas and possibilities for FedCM, then please join the <a href=\"https:\/\/www.w3.org\/community\/fed-id\/\">FedID Community Group<\/a>. That\u2019s where incubation happens! For more concrete development on specific areas intended for standardization, the <a href=\"https:\/\/www.w3.org\/groups\/wg\/fedid\/\">FedID Working Group<\/a> is the place to be. The two groups work closely together, and new participants are welcome.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Many applications and services need to work through the browser to support SSO\/federated login, and yet federated login and tracking tools use the same web platform features and are indistinguishable from the browser\u2019s perspective. From cookies to navigation-based tracking, establishing &hellip; <a href=\"https:\/\/www.w3.org\/community\/fed-id\/2024\/07\/12\/navigating-federated-authentication-the-scope-of-fedcm\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":11247,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_s2mail":"yes","footnotes":""},"categories":[1],"tags":[3],"class_list":["post-10","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-fedcm"],"_links":{"self":[{"href":"https:\/\/www.w3.org\/community\/fed-id\/wp-json\/wp\/v2\/posts\/10","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.w3.org\/community\/fed-id\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.w3.org\/community\/fed-id\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.w3.org\/community\/fed-id\/wp-json\/wp\/v2\/users\/11247"}],"replies":[{"embeddable":true,"href":"https:\/\/www.w3.org\/community\/fed-id\/wp-json\/wp\/v2\/comments?post=10"}],"version-history":[{"count":1,"href":"https:\/\/www.w3.org\/community\/fed-id\/wp-json\/wp\/v2\/posts\/10\/revisions"}],"predecessor-version":[{"id":11,"href":"https:\/\/www.w3.org\/community\/fed-id\/wp-json\/wp\/v2\/posts\/10\/revisions\/11"}],"wp:attachment":[{"href":"https:\/\/www.w3.org\/community\/fed-id\/wp-json\/wp\/v2\/media?parent=10"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.w3.org\/community\/fed-id\/wp-json\/wp\/v2\/categories?post=10"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.w3.org\/community\/fed-id\/wp-json\/wp\/v2\/tags?post=10"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}