
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/">
    <channel>
        <title><![CDATA[ The Cloudflare Blog ]]></title>
        <description><![CDATA[ Get the latest news on how products at Cloudflare are built, technologies used, and join the teams helping to build a better Internet. ]]></description>
        <link>https://blog.cloudflare.com</link>
        <atom:link href="https://blog.cloudflare.com/" rel="self" type="application/rss+xml"/>
        <language>en-us</language>
        <image>
            <url>https://blog.cloudflare.com/favicon.png</url>
            <title>The Cloudflare Blog</title>
            <link>https://blog.cloudflare.com</link>
        </image>
        <lastBuildDate>Fri, 03 Apr 2026 07:18:18 GMT</lastBuildDate>
        <item>
            <title><![CDATA[Open-sourcing OpenPubkey SSH (OPKSSH): integrating single sign-on with SSH]]></title>
            <link>https://blog.cloudflare.com/open-sourcing-openpubkey-ssh-opkssh-integrating-single-sign-on-with-ssh/</link>
            <pubDate>Tue, 25 Mar 2025 13:00:00 GMT</pubDate>
            <description><![CDATA[ OPKSSH (OpenPubkey SSH) is now open-sourced as part of the OpenPubkey project. ]]></description>
            <content:encoded><![CDATA[ <p>OPKSSH makes it easy to <a href="https://en.wikipedia.org/wiki/Secure_Shell"><u>SSH</u></a> with single sign-on technologies like OpenID Connect, thereby removing the need to manually manage and configure SSH keys. It does this without adding a trusted party other than your identity provider (IdP).</p><p>We are excited to announce <a href="https://github.com/openpubkey/opkssh/"><u>OPKSSH (OpenPubkey SSH)</u></a> has been open-sourced under the umbrella of the OpenPubkey project. While the underlying protocol <a href="https://github.com/openpubkey/openpubkey/"><u>OpenPubkey</u></a> became <a href="https://www.linuxfoundation.org/press/announcing-openpubkey-project"><u>an open source Linux foundation project in 2023</u></a>, OPKSSH was closed source and owned by <a href="https://www.cloudflare.com/press-releases/2024/cloudflare-acquires-bastionzero-to-add-zero-trust-infrastructure-access/"><u>BastionZero (now Cloudflare)</u></a>. Cloudflare has gifted this code to the OpenPubkey project, making it open source.</p><p>In this post, we describe what OPKSSH is, how it simplifies SSH management, and what OPKSSH being open source means for you.</p>
    <div>
      <h2>Background</h2>
      <a href="#background">
        
      </a>
    </div>
    <p>A cornerstone of modern access control is single sign-on <a href="https://www.cloudflare.com/learning/access-management/what-is-sso/"><u>(SSO)</u></a>, where a user authenticates to an <a href="https://www.cloudflare.com/learning/access-management/what-is-an-identity-provider/"><u>identity provider (IdP)</u></a>, and in response the IdP issues the user a <i>token</i>. The user can present this token to prove their identity, such as “Google says I am Alice”. SSO is the rare security technology that both increases convenience — users only need to sign in once to get access to many different systems — and increases security.</p>
    <div>
      <h3>OpenID Connect</h3>
      <a href="#openid-connect">
        
      </a>
    </div>
    <p><a href="https://openid.net/developers/how-connect-works/"><u>OpenID Connect (OIDC)</u></a> is the main protocol used for SSO. As shown below, in OIDC the IdP, called an OpenID Provider (OP), issues the user an ID Token which contains identity claims about the user, such as “email is alice@example.com”. These claims are digitally signed by the OP, so anyone who receives the ID Token can check that it really was issued by the OP.</p><p>Unfortunately, while ID Tokens <i>do </i>include identity claims like name, organization, and email address, they <i>do not</i> include the user’s public key. This prevents them from being used to directly secure protocols like SSH or <a href="https://www.cloudflare.com/learning/privacy/what-is-end-to-end-encryption/"><u>End-to-End Encrypted messaging</u></a>.</p><p>Note that throughout this post we use the term OpenID Provider (OP) rather than IdP, as OP specifies the exact type of IdP we are using, i.e., an OpenID IdP. We use Google as an example OP, but OpenID Connect works with Google, Azure, Okta, etc.</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2zfixdknoL3a9HqBzcsmAY/605f469bdd25b4b8cfaf29dac3561c4f/image1.png" />
          </figure><p><sup><i>Shows a user Alice signing in to Google using OpenID Connect and receiving an ID Token</i></sup></p>
    <div>
      <h3>OpenPubkey</h3>
      <a href="#openpubkey">
        
      </a>
    </div>
    <p>OpenPubkey, shown below, adds public keys to ID Tokens. This enables ID Tokens to be used like certificates, e.g. “Google says <code>alice@example.com</code> is using public key 0x123.” We call an ID token that contains a public key a <i>PK Token</i>. The beauty of OpenPubkey is that, unlike other approaches, OpenPubkey does not require any changes to existing SSO protocols and supports any OpenID Connect compliant OP.</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2HNkaW8vPE26KQrNwNOzNo/ef00f91dc983f3f2ac3c3a00b223b3e5/image3.png" />
          </figure><p><sup><i>Shows a user Alice signing in to Google using OpenID Connect/OpenPubkey and then producing a PK Token</i></sup>
While OpenPubkey enables ID Tokens to be used as certificates, OPKSSH extends this functionality so that these ID Tokens can be used as SSH keys in the SSH protocol. This adds SSO authentication to SSH without requiring changes to the SSH protocol.</p>
    <div>
      <h2>Why this matters</h2>
      <a href="#why-this-matters">
        
      </a>
    </div>
    <p>OPKSSH frees users and administrators from the need to manage long-lived SSH keys, making SSH more secure and more convenient.</p><blockquote><p><i>“In many organizations – even very security-conscious organizations – there are many times more obsolete authorized keys than they have employees. Worse, authorized keys generally grant command-line shell access, which in itself is often considered privileged. We have found that in many organizations about 10% of the authorized keys grant root or administrator access. SSH keys never expire.”</i>  
- <a href="https://ylonen.org/papers/ssh-key-challenges.pdf">Challenges in Managing SSH Keys – and a Call for Solutions</a> by Tatu Ylonen (Inventor of SSH)</p></blockquote><p>In SSH, users generate a long-lived SSH public key and SSH private key. To enable a user to access a server, the user or the administrator of that server configures that server to trust that user’s public key. Users must protect the file containing their SSH private key. If the user loses this file, they are locked out. If they copy their SSH private key to multiple computers or back up the key, they increase the risk that the key will be compromised. When a private key is compromised or a user no longer needs access, the user or administrator must remove that public key from any servers it currently trusts. All of these problems create headaches for users and administrators.</p><p>OPKSSH overcomes these issues:</p><p><b>Improved security:</b> OPKSSH replaces long-lived SSH keys with ephemeral SSH keys that are created on-demand by OPKSSH and expire when they are no longer needed. This reduces the risk a private key is compromised, and limits the time period where an attacker can use a compromised private key. By default, these OPKSSH public keys expire every 24 hours, but the expiration policy can be set in a configuration file.</p><p><b>Improved usability:</b> Creating an SSH key is as easy as signing in to an OP. This means that a user can SSH from any computer with opkssh installed, even if they haven’t copied their SSH private key to that computer.</p><p>To generate their SSH key, the user simply runs opkssh login, and they can use ssh as they typically do.</p><p><b>Improved visibility:</b> OPKSSH moves SSH from authorization by public key to authorization by identity. If Alice wants to give Bob access to a server, she doesn’t need to ask for his public key, she can just add Bob’s email address bob@example.com to the OPKSSH authorized users file, and he can sign in. This makes tracking who has access much easier, since administrators can see the email addresses of the authorized users.</p><p>OPKSSH does not require any code changes to the SSH server or client. The only change needed to SSH on the SSH server is to add two lines to the SSH config file. For convenience, we provide an installation script that does this automatically, as seen in the video below.</p><div>
  
</div>
<p></p>
    <div>
      <h2>How it works</h2>
      <a href="#how-it-works">
        
      </a>
    </div>
    
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5rVAtbu3vv9wU84ke8IZIb/a5e564c2ae3834391bd7f04c843508b7/image4.png" />
          </figure><p><sup><i>Shows a user Alice SSHing into a server with her PK Token inside her SSH public key. The server then verifies her SSH public key using the OpenPubkey verifier.</i></sup></p><p>Let’s look at an example of Alice (<code>alice@example.com</code>) using OPKSSH to SSH into a server:</p><ul><li><p>Alice runs <code>opkssh login</code>. This command automatically generates an ephemeral public key and private key for Alice. Then it runs the OpenPubkey protocol by opening a browser window and having Alice log in through their SSO provider, e.g., Google. </p></li><li><p>If Alice SSOs successfully, OPKSSH will now have a PK Token that commits to Alice’s ephemeral public key and Alice’s identity. Essentially, this PK Token says “<code>alice@example.com</code> authenticated her identity and her public key is 0x123…”.</p></li><li><p>OPKSSH then saves to Alice’s <code>.ssh </code>directory:</p><ul><li><p>an SSH public key file that contains Alice’s PK Token </p></li><li><p>and an SSH private key set to Alice’s ephemeral private key.</p></li></ul></li><li><p>When Alice attempts to SSH into a server, the SSH client will find the SSH public key file containing the PK Token in Alice’s <code>.ssh</code> directory, and it will send it to the SSH server to authenticate.</p></li><li><p>The SSH server forwards the received SSH public key to the OpenPubkey verifier installed on the SSH server. This is because the SSH server has been configured to use the OpenPubkey verifier via the AuthorizedKeysCommand.</p></li><li><p>The OpenPubkey verifier receives the SSH public key file and extracts the PK Token from it. It then verifies that the PK Token is unexpired, valid, signed by the OP and that the public key in the PK Token matches the public key field in the SSH public key file. Finally, it extracts the email address from the PK Token and checks if <code>alice@example.com</code> is allowed to SSH into this server.</p></li></ul><p>Consider the problems we face in getting OpenPubkey to work with SSH without requiring any changes to the SSH protocol or software:</p><p><b>How do we get the PK Token from the user’s machine to the SSH server inside the SSH protocol?</b>
We use the fact that SSH public keys can be SSH certificates, and that SSH certificates have <a href="https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/ssh/PROTOCOL.certkeys?rev=1.4&amp;content-type=text/x-cvsweb-markup"><u>an extension field</u></a> that allows arbitrary data to be included in the certificate. Thus, we package the PK Token into an SSH certificate extension so that the PK Token will be transmitted inside the SSH public key as a normal part of the SSH protocol. This enables us to send the PK Token to the SSH server as additional data in the SSH certificate, and allows OPKSSH to work without any changes to the SSH client.</p><p><b>How do we check that the PK Token is valid once it arrives at the SSH server?
</b>SSH servers support a configuration parameter called the <a href="https://man.openbsd.org/sshd_config#AuthorizedKeysCommand"><i><u>AuthorizedKeysCommand</u></i></a><i> </i>that allows us to use a custom program to determine if an SSH public key is authorized or not. Thus, we change the SSH server’s config file to use the OpenPubkey verifier instead of the SSH verifier by making the following two line change to <code>sshd_config</code>:</p>
            <pre><code>AuthorizedKeysCommand /usr/local/bin/opkssh verify %u %k %t
AuthorizedKeysCommandUser root</code></pre>
            <p>The OpenPubkey verifier will check that the PK Token is unexpired, valid and signed by the OP. It checks the user’s email address in the PK Token to determine if the user is authorized to access the server.</p><p><b>How do we ensure that the public key in the PK Token is actually the public key that secures the SSH session?</b>
The OpenPubkey verifier also checks that the public key in the public key field in the SSH public key matches the user’s public key inside the PK Token. This works because the public key field in the SSH public key is the actual public key that secures the SSH session.</p>
    <div>
      <h2>What is happening</h2>
      <a href="#what-is-happening">
        
      </a>
    </div>
    <p>We have <a href="https://github.com/openpubkey/openpubkey/pull/234"><u>open sourced OPKSSH</u></a> under the <a href="https://www.apache.org/licenses/LICENSE-2.0"><u>Apache 2.0 license</u></a>, and released it as <a href="https://github.com/openpubkey/opkssh/"><u>openpubkey/opkssh on GitHub</u></a>. While the OpenPubkey project has had code for using SSH with OpenPubkey since the early days of the project, this code was intended as a prototype and was missing many important features. With OPKSSH, SSH support in OpenPubkey is no longer a prototype and is now a complete feature. Cloudflare is not endorsing OPKSSH, but simply donating code to OPKSSH.</p><p><b>OPKSSH provides the following improvements to OpenPubkey:</b></p><ul><li><p>Production ready SSH in OpenPubkey</p></li><li><p>Automated installation</p></li><li><p>Better configuration tools</p></li></ul>
    <div>
      <h2>To learn more</h2>
      <a href="#to-learn-more">
        
      </a>
    </div>
    <p>See the <a href="https://github.com/openpubkey/opkssh/blob/main/README.md"><u>OPKSSH readme</u></a> for documentation on how to install and connect using OPKSSH.</p>
    <div>
      <h2>How to get involved</h2>
      <a href="#how-to-get-involved">
        
      </a>
    </div>
    <p>There are a number of ways to get involved in OpenPubkey or OPKSSH. The project is organized through the <a href="https://github.com/openpubkey/opkssh"><u>OPKSSH GitHub</u></a>. We are building an open and friendly community and welcome pull requests from anyone. If you are interested in contributing, see <a href="https://github.com/openpubkey/openpubkey/blob/main/CONTRIBUTING.md"><u>our contribution guide</u></a>.</p><p>We run a <a href="https://github.com/openpubkey/community"><u>community</u></a> meeting every month which is open to everyone, and you can also find us over on the <a href="https://openssf.org/getinvolved/"><u>OpenSSF Slack</u></a> in the #openpubkey channel.</p> ]]></content:encoded>
            <category><![CDATA[Open Source]]></category>
            <category><![CDATA[SSH]]></category>
            <category><![CDATA[Single Sign On (SSO)]]></category>
            <category><![CDATA[Cryptography]]></category>
            <category><![CDATA[Authentication]]></category>
            <category><![CDATA[Research]]></category>
            <guid isPermaLink="false">01zA7RtUKkhrUeINJ9AIS3</guid>
            <dc:creator>Ethan Heilman</dc:creator>
        </item>
        <item>
            <title><![CDATA[Releasing Cloudflare Access’ most requested feature]]></title>
            <link>https://blog.cloudflare.com/releasing-cloudflare-access-most-requested-feature/</link>
            <pubDate>Fri, 22 May 2020 11:00:00 GMT</pubDate>
            <description><![CDATA[ You can now configure a specific identity provider for applications secured with Cloudflare Access. ]]></description>
            <content:encoded><![CDATA[ <p>Cloudflare Access, part of <a href="https://teams.cloudflare.com/">Cloudflare for Teams</a>, replaces legacy corporate VPNs with Cloudflare’s global network. Instead of starting a VPN client to backhaul traffic through an office, users visit the hostname of an internal application and login with your team’s SSO provider. While the applications feel like SaaS apps for end users, your security and IT departments can configure granular controls and audit logging in a single place.</p><p>Since Access launched two years ago, customers have been able to integrate multiple SSO providers at the same time. This MultiSSO option <a href="/multi-sso-and-cloudflare-access-adding-linkedin-and-github-teams/">makes it seamless</a> for teams to have employees login with Okta or Azure AD while partners and contractors use LinkedIN or GitHub.</p><p>The integrations always applied globally. Users would see all SSO options when connecting to any application protected by Cloudflare Access. As more organizations use Cloudflare Access to connect distributed and mixed workforces to resources, listing every provider on every app no longer scales.</p><p>For example, your team might have an internal GitLab instance that only employees need to access using your corporate G Suite login. Meanwhile, the marketing department needs to share QA versions of new sites with an external agency who authenticates with LinkedIn. Asking both sets of users to pick an SSO provider on both applications adds a redundant step and can lead to additional questions or IT tickets.</p><p>The ability to only show users the relevant identity provider became the most requested feature in Cloudflare Access in the last few months. Starting today, you can use <a href="/a-single-dashboard-for-cloudflare-for-teams/">the new Cloudflare for Teams UI</a> to configure identity options on individual applications.</p>
    <div>
      <h3>Cloudflare Access</h3>
      <a href="#cloudflare-access">
        
      </a>
    </div>
    <p>Cloudflare Access secures applications by applying zero-trust enforcement to every request. Rather than trusting anyone on a private network, Access checks for identity any time someone attempts to reach the application. With Cloudflare’s global network, that check takes place in a data center in over 200 cities around the world to avoid compromising performance.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/jvDc3WmSGJaziha5arU8b/7cfb04543a79186aaf3f5e04a60de0f6/image5-2.png" />
            
            </figure><p>Behind the scenes, administrators build rules to decide who should be able to reach the tools protected by Access. In turn, when users need to connect to those tools, they are prompted to authenticate with one of the identity provider options. Cloudflare Access checks their login against the list of allowed users and, if permitted, allows the request to proceed.</p>
    <div>
      <h3>The challenge of agreeing on identity</h3>
      <a href="#the-challenge-of-agreeing-on-identity">
        
      </a>
    </div>
    <p>Most zero-trust options, like the VPN appliances they replace, rely on one source of identity. If your team has an application that you need to share with partners or contractors, you need to collectively agree on a single standard.</p><p>Some teams opt to solve that challenge by onboarding external users to their own identity provider. When contractors join a project, the IT department receives help desk tickets to create new user accounts in the organization directory. Contractors receive instructions on how to sign-up, they spend time creating passwords and learning the new tool, and then use those credentials to login.</p><p>This option gives an organization control of identity, but adds overhead in terms of time and cost. The project owner also needs to pay for new SSO seat licenses, even if those seats are temporary. The IT department must spend time onboarding, helping, and then offboarding those user accounts. And the users themselves need to learn a new system and manage yet another password - this one with permission to your internal resources.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/4OeJ6LsB9y0nGnlfj4ZPNq/74392d79cda4f74596f09f6776ba2e01/image1-6.png" />
            
            </figure><p>Alternatively, other groups decide to “federate” identity. In this flow, an organization will connect their own directory service to their partner’s equivalent service. External users login with their own credentials, but administrators do the work to merge the two services to trust one another.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5NOaKt0Xn0lw2F7xPHnpcZ/eb6fd4e37ccdae7841082778829ece41/image4-3.png" />
            
            </figure><p>While this method avoids introducing new passwords, both organizations need to agree to dedicate time to integrate their identity providers - assuming that those providers can integrate. Businesses then need to configure this setup with each contractor or partner group. This model also requires that external users be part of a larger organization, making it unavailable to single users or freelancers.</p><p>Cloudflare Access avoids forcing the decision on a single source of identity by supporting multiple. When users connect, they are presented with those options. Users choose their specific provider and Access checks that individual’s login against the list of allowed users.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/4E18BwG8NDEjA0ndcw3kiH/4f6517caf7c72c6a21addd9fc4caca04/image3-6.png" />
            
            </figure>
    <div>
      <h3>Configuring per-app options</h3>
      <a href="#configuring-per-app-options">
        
      </a>
    </div>
    <p>Not all of those options apply to every application that an organization secures. To segment those applications, and reduce user confusion, you can now scope specific apps to different providers.</p><p>To get started, select the application that you want to segment with a particular provider in the Cloudflare for Teams UI. Click the tab titled “Authentication”.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2KJYUZrnwcsF28hoNnU98y/9c42b086934cd99c94c2047b49ca67f3/image2-6.png" />
            
            </figure><p>The tab will list all providers integrated with your account. By default, Access will continue to enable all options for end users. You can toggle any provider on or off in this view and save. The next time your users visit this application, they will only see the options enabled.</p><p>If you disable all but one option, Access will skip the login page entirely and redirect the user directly to the provider - saving them an unnecessary click.</p>
    <div>
      <h3>What’s next?</h3>
      <a href="#whats-next">
        
      </a>
    </div>
    <p>You can start configuring individual identity providers with specific applications in the new Cloudflare for Teams <a href="http://dash.teams.cloudflare.com/">dashboard</a>. Additional documentation is also available.</p><p>The new Teams UI makes this feature possible, but the login page that your end users see still has the legacy design from the older Access dashboard that launched two years ago. Cloudflare for Teams will be releasing a style update to that page in the next month to bring it in line with this new UI.</p> ]]></content:encoded>
            <category><![CDATA[Cloudflare Zero Trust]]></category>
            <category><![CDATA[Single Sign On (SSO)]]></category>
            <category><![CDATA[Cloudflare Access]]></category>
            <category><![CDATA[Zero Trust]]></category>
            <category><![CDATA[Product News]]></category>
            <category><![CDATA[Security]]></category>
            <guid isPermaLink="false">6BQedKjXwQnjDema2Esbk6</guid>
            <dc:creator>Sam Rhea</dc:creator>
        </item>
        <item>
            <title><![CDATA[A single dashboard for Cloudflare for Teams]]></title>
            <link>https://blog.cloudflare.com/a-single-dashboard-for-cloudflare-for-teams/</link>
            <pubDate>Mon, 04 May 2020 14:00:00 GMT</pubDate>
            <description><![CDATA[ Cloudflare Access is now available in the Cloudflare for Teams UI. You can now manage application and threat security for your organization in a single dashboard. ]]></description>
            <content:encoded><![CDATA[ <p>Starting today, Cloudflare Access can now be used in the Cloudflare for Teams dashboard. You can manage security policies for your people and devices in the same place that you build zero-trust rules to protect your applications and resources. Everything is now in one place in a single dashboard.</p><p>We are excited to launch a new UI that can be used across the entire Teams platform, but we didn’t build this dashboard just for the sake of a new look-and-feel. While migrating the Access dashboard, we focused on solving one of the largest sources of user confusion in the product.</p><p>This post breaks down why the original  UI caused some headaches, how we think about objects in Cloudflare for Teams, and how we set out to fix the way we display that to our users.</p>
    <div>
      <h3>Cloudflare Access</h3>
      <a href="#cloudflare-access">
        
      </a>
    </div>
    <p><a href="https://teams.cloudflare.com/access/index.html">Cloudflare Access</a> is one-half of <a href="https://teams.cloudflare.com/">Cloudflare for Teams</a>, a security platform that runs on Cloudflare’s network. Teams protects users, devices and data  without compromising experience or performance. We built Cloudflare Access to <a href="/dogfooding-from-home/">solve our own headaches</a> with private networks as we grew from a team concentrated in a single office to a globally distributed organization.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/6reW00xK1uHks0ndOasP0D/d0f0b4e2ece6d237b52d78f183c75b77/access-tunnel-1.png" />
            
            </figure><p>Cloudflare Access replaces corporate VPNs with Cloudflare’s network in a zero-trust model. Instead of placing internal tools on a private network, teams deploy them in any environment, including hybrid or multi-cloud models, and secure them consistently with Cloudflare’s network.</p><p>When users connect to those tools, they are prompted to login with their team’s identity provider. Cloudflare Access checks their login against the list of allowed users and, if permitted, allows the request to proceed.</p><p>Deploying Access does not require exposing new holes in corporate firewalls. Teams connect their resources through a secure outbound connection, Argo Tunnel, which runs in your infrastructure to connect the applications and machines to Cloudflare. That tunnel makes outbound-only calls to the Cloudflare network and organizations can replace complex firewall rules with just one: disable all inbound connections.</p>
    <div>
      <h3>Sites vs. Accounts</h3>
      <a href="#sites-vs-accounts">
        
      </a>
    </div>
    <p>When you use Cloudflare, you use the platform at two levels: account and site. You have one Cloudflare account, though you can be a member of multiple accounts. That one account captures details like your billing profile and notification settings.</p><p>Your account contains sites, the hostnames or zones that you add to Cloudflare. You configure features that apply to a site, like <a href="https://www.cloudflare.com/learning/ddos/glossary/web-application-firewall-waf/">web application firewall (WAF)</a> and caching rules.</p><p>When we launched Access nearly two years ago, you could use the product to add an identity check to a site you added to Cloudflare, either at the hostname, subdomain, or path. To do that, users select the site in their Cloudflare dashboard, toggle to the Access tab, and build a rule specific to that site.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/1QbXmvGsCH4ezSxd4XqnMC/e521007708ad92f9b6a8a3f608b73629/access-tab.png" />
            
            </figure><p>To add rules to a different site, a user steps back up a level. They need to select the new site from the dropdown and load the Access tab for that site. However, two components in the UI remained the same and shared configuration:</p><ul><li><p>SSO integration</p></li><li><p>Logs</p></li></ul><p>The SSO integration is where Access pulls information about identity. Users integrate their Okta, AzureAD, GSuite accounts, or other identity providers, in this card. We made a decision that the integration should apply across your entire account; you should not need to reconfigure your SSO connection on every site where you want to add an Access rule.</p><p>However, we displayed that information in the site-specific page. Cloudflare has account-level concepts, like billing or account users, but we wanted to keep everything related to Access in a single page so we made this compromise. Logs followed a similar pattern.</p><p>This decision caused confusion. For example, we add a log table to the bottom of the tab when users view “site{.}com”. However, that table actually presented logs from both “site{.}com” and any other hostname in the account.</p><p>As more features were added, this exception grew out of control. At this point, the majority of features you see when you open the Access tab for one of your sites are account-level features stuffed into the site view. The page below is the Access tab for a site in my account, widgetcorp{.}tech. Highlighted in green are the boxes that apply to the site I have selected. Highlighted in red are the boxes that apply to my Access account.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/7N0Vi02BpJipg2PX7u0Phy/cb0ff5828b6444b758e2b6a8f1de0b2a/Screen-Shot-2020-05-04-at-9.24.20-AM.png" />
            
            </figure><p>This user experience is unnecessarily complex . Even worse, though, is that confusion in security products can lead to real incidents. Any time that a user asks “am I building something for my account or this site?” We needed to fix both.</p>
    <div>
      <h3>Starting with a new design</h3>
      <a href="#starting-with-a-new-design">
        
      </a>
    </div>
    <p>A few months ago, Cloudflare launched Cloudflare for Teams, which consists of two complementary products: Access and a new solution, <a href="https://teams.cloudflare.com/gateway/index.html">Cloudflare Gateway</a>. If Access is a bouncer standing in front of the door, checking identity, Gateway is a bodyguard, keeping your team safe as you navigate the Internet.</p><p>Gateway has no concept of sites, at least not sites that you host yourself. Rather than securing your Internet properties, like Cloudflare’s infrastructure products that rely on the reverse proxy, Gateway secures your team from the Internet, and the threats on it. For the first time, you could use a Cloudflare product without a site on Cloudflare.</p><p>Gateway introduced other new concepts which have no relation to a domain name in the traditional Cloudflare sense. You can add your office network and your home WiFi to your Gateway account. You can build rules to block any sites on the Internet. You can now use Gateway on mobile devices and <a href="/announcing-the-beta-for-warp-for-macos-and-windows/">soon desktops</a> as well.</p><p>To capture that model, we started on a new UI from scratch, and earlier this year <a href="/protect-your-team-with-cloudflare-gateway/">we launched a new dashboard for Gateway</a>, dash.teams.cloudflare.com.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/6LoRFtNPOIbolv4eCKualU/34ba7788dd418e9a42bdd5504d5021f5/new-dash-gateway.png" />
            
            </figure>
    <div>
      <h3>Account settings now have a home of their own</h3>
      <a href="#account-settings-now-have-a-home-of-their-own">
        
      </a>
    </div>
    <p>The products in Cloudflare for Teams should live in one place; you shouldn’t need to hop back and forth between different dashboards to manage them. Bringing Access into the Teams dashboard puts everything under one roof.</p><p>That also gave us an opportunity to solve the confusion in the current Access UI. Since the Teams dashboard is not constrained by the site-specific model, we could break out the dashboard into components that made sense for how people use the Access product.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/1bmn2yFDQ5OxMk5u27PsbR/858bd2352d386c6fb87e40f633634579/new-dash-auth.png" />
            
            </figure><p>The new dashboard untangles the tools in Access that apply to your entire account (the methods that you use to secure your resources) from the features that apply to a single site (the rules you build to protect a resource).</p>
    <div>
      <h3>One dashboard for your team</h3>
      <a href="#one-dashboard-for-your-team">
        
      </a>
    </div>
    <p>Merging Access into the Cloudflare for Teams dashboard, and solving the problems of the original UI, is just the beginning. We’ll be using that foundation to release new features in both Access and Gateway, including more that apply across both products.</p><p>You will also be able to continue to extend some of the configuration made in Access to Gateway. For example, an integration with a provider like Okta to build zero-trust policies in Access can eventually be reused for adding group-based policies into Gateway. You’ll see the beginning of that in the new UI, as well, with categories like “My Teams” and “Logs” that apply or will apply to both products. As we continue, we’re going to try to avoid making the same mistake of conflating account, site, and now product objects.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/6JDlqoqhaurj5kidiMlkH8/1f6f7ef2e21cde9d860cf6ec049dce19/one-dash-1.png" />
            
            </figure>
    <div>
      <h3>What’s next?</h3>
      <a href="#whats-next">
        
      </a>
    </div>
    <p>The new Access UI is available to all customers today in the Cloudflare for Teams dashboard. You can get started by visiting <a href="http://dash.teams.cloudflare.com">this link</a> and signing in with your Cloudflare account.</p><p>To use the Access UI, you will first need to enable Cloudflare Access and add a site to Cloudflare in the existing dashboard. Instructions are available <a href="https://developers.cloudflare.com/access/about/quick-start/">here</a>. You can also watch a <a href="https://watch.cloudflarestream.com/16c1aae7bf7f50c648fec8afa6b7f6fa">guided tour of the new site</a>.</p><p>No new features have been added, though we’re busy working on them. This release focused entirely on improving how users approach the product based on the feedback we have received over 22 months. We’re still listening to new feedback. Run into an issue or notice an area of improvement? <a href="https://forms.gle/MTh2FJ5Q8Gmh31qr7">Please tell us</a>.</p> ]]></content:encoded>
            <category><![CDATA[Cloudflare Zero Trust]]></category>
            <category><![CDATA[Cloudflare Access]]></category>
            <category><![CDATA[Cloudflare Gateway]]></category>
            <category><![CDATA[Zero Trust]]></category>
            <category><![CDATA[Single Sign On (SSO)]]></category>
            <category><![CDATA[Product News]]></category>
            <category><![CDATA[Security]]></category>
            <category><![CDATA[Teams Dashboard]]></category>
            <guid isPermaLink="false">6Cl98fMAh9ZtVk4JepU55A</guid>
            <dc:creator>Sam Rhea</dc:creator>
        </item>
        <item>
            <title><![CDATA[Open sourcing our Sentry SSO plugin]]></title>
            <link>https://blog.cloudflare.com/open-sourcing-our-sentry-sso-plugin/</link>
            <pubDate>Wed, 11 Mar 2020 12:00:00 GMT</pubDate>
            <description><![CDATA[ Cloudflare Access replaces legacy corporate VPNs with Cloudflare’s global network. Using your existing identity provider, Access lets your end users to login from anywhere. ]]></description>
            <content:encoded><![CDATA[ <p>Cloudflare Access, part of <a href="https://teams.cloudflare.com/">Cloudflare for Teams</a>, replaces legacy corporate VPNs with Cloudflare’s global network. Using your existing identity provider, Access enables your end users to login from anywhere — without a clunky agent or traffic backhaul through a centralized appliance or VPN.</p><p>Today, we are <a href="https://github.com/cloudflare/cloudflare-access-for-sentry">open sourcing a plugin</a> that continues to improve that experience by making it easier for teams to use Cloudflare Access with one of the software industry’s most popular engineering tools, <a href="https://sentry.io/welcome/">Sentry</a>.</p>
    <div>
      <h2>What is Sentry?</h2>
      <a href="#what-is-sentry">
        
      </a>
    </div>
    <p><a href="https://sentry.io/welcome/">Sentry</a> is an application that helps software teams find and diagnose errors in their products. We use Sentry here at Cloudflare. When you encounter an error when using a Cloudflare product, like our dashboard, we log that event. We then use Sentry to determine what went wrong.</p><p>Sentry can categorize and roll up errors, making it easy to identify new problems before investigating them with the tool’s event logging. Engineering managers here can use the dashboards to monitor the health of a new release. Product managers often use those reports as part of prioritizing what to fix next. Engineers on our team can dig into the individual errors as they release a fix.</p><p>Sentry is available in two forms: a SaaS model and a <a href="https://docs.sentry.io/server/">self-hosted version</a>. Both modes give engineering teams comprehensive insight into the behavior of their deployed applications and the issues their users encounter.</p>
    <div>
      <h2>Connecting users to Sentry</h2>
      <a href="#connecting-users-to-sentry">
        
      </a>
    </div>
    <p>Organizations can deploy the self-hosted version on-premise or in a cloud environment they control. However, they still need to create a secure way to allow their teams to connect to the app.</p><p>Historically, most opt for a VPN to solve that challenge. End users outside of the office need to configure a VPN client on their laptop and try to login with credentials that are often different from the ones used for a corporate SSO. Administrators had to make sure their VPN appliance could scale for a few users, but with most in the office, the VPN was a serious inconvenience for a smaller set of users.</p><p>Over the last few years, that group of users working outside of the office has grown. Users are working from BYOD laptops, mobile phones, and in unfamiliar networks that all struggle with a VPN. Even worse, a VPN has a load limit because it relies on an actual appliance (whether virtual or physical hardware). Organizations can attempt to stress test their VPN, but will always have a limit that administrators need to continuously monitor.</p><p>Cloudflare Access gives administrators the scale of Cloudflare’s global network and provides end users with a SaaS-like experience that just works from any device or network. When teams secure Sentry with Cloudflare Access, end users visit the hostname of the application, login with their identity provider, and are redirected from Cloudflare’s edge to the app if they have permission to reach it.</p><p>However, in the case of an app like Sentry, end users need to login one more time to the application itself. That small step adds real friction, which Access can now solve through this open source plugin.</p>
    <div>
      <h2>JWT Security with Cloudflare for Teams</h2>
      <a href="#jwt-security-with-cloudflare-for-teams">
        
      </a>
    </div>
    <p>When a user logs in to their identity provider when connecting to an application protected by Access, Cloudflare signs a JSON Web Token (JWT).</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5dmK31q5XXNfv3Zoe32frf/b43a4d349f21ce70abf18c08b4f219e3/pasted-image-0.png" />
            
            </figure><p>Cloudflare Access uses that JWT, and its contents, to confirm a user identity before allowing or denying access to sensitive resources. Cloudflare securely creates these through the OAUTH or SAML integration between Cloudflare Access and the configured identity provider. Each JWT consists of three Base64-URL strings: the header, the payload, and the signature.</p><ul><li><p>The header defines the cryptographic operation that encrypts the data in the JWT.</p></li><li><p>The payload consists of name-value pairs for at least one and typically multiple claims, encoded in JSON. For example, the payload can contain the identity of a user</p></li><li><p>The signature allows the receiving party to confirm that the payload is authentic.</p></li></ul><p>The token is signed using a public private key pair and saved in the user’s browser. Inside of that token, we store the following details in addition to some general metadata:</p><ul><li><p><b>User identity</b>: typically the email address of the user retrieved from your identity provider.</p></li><li><p><b>Authentication domain</b>: the domain that signs the token. For Access, we use “example.cloudflareaccess.com” where “example” is a subdomain you can configure.</p></li><li><p><b>Audience</b>: The domain of the application you are attempting to reach.</p></li><li><p><b>Expiration</b>: the time at which the token is no longer valid for use.</p></li></ul><p>When a request is made to an application behind Access, Cloudflare looks for the presence of that token. If available, we decrypt it, validate its authenticity, and then read the payload. If the payload contains information about a user who should be able to reach the application, we send their request to an origin.</p><p>The Sentry plugin takes that JWT and reuses it, instead of prompting the visitor to login again with separate credentials. The plugin parses the user identity, checks it against the directory of users in Sentry, and maps that token to a Sentry profile and its assigned permissions.</p><p>All of this is seamless to the end user and takes just a few milliseconds. The user is instantly redirected to the application, fully authenticated, and only needs to remember their SSO login. Administrators now have one fewer set of credentials to worry about managing and the associated onboarding and offboarding.</p>
    <div>
      <h2>Building your own SSO plugin</h2>
      <a href="#building-your-own-sso-plugin">
        
      </a>
    </div>
    <p>We believe that the JSON Web Token is a simple and efficient method for sending identity. Applications that use JWTs for authorization only need to support the JWT standard, instead of attempting to integrate with different versions of SAML or other formats like OIDC and OAUTH. A JWT is also information dense and built in a format, JSON, that can be easily parsed by the target application.</p><p>Some products, like <a href="https://github.com/getredash/redash/blob/master/redash/authentication/jwt_auth.py">Redash</a>, already have native support for JWT integration. The <a href="https://github.com/cloudflare/cloudflare-access-for-sentry">Sentry plugin</a> we built joins our <a href="https://github.com/cloudflare/cloudflare-access-for-atlassian">Atlassian plugin</a> as both options to extend support to those apps, but also examples that can be used for integration with other products. Other teams, like Auth0, have also <a href="https://auth0.com/blog/5-steps-to-add-modern-authentication-to-legacy-apps-using-jwts/">published materials</a> to add JWT integration to legacy apps.</p>
    <div>
      <h2>What’s next?</h2>
      <a href="#whats-next">
        
      </a>
    </div>
    <p>Cloudflare Access is available on every Cloudflare account and 5 free seats are included by default. You can follow <a href="https://developers.cloudflare.com/access/setting-up-access/">these instructions</a> to get started.</p><p>If you are a small business, you can sign up for the Cloudflare for Teams program right now at the link below.</p><p><b></b><a href="https://www.cloudflare.com/small-business/"><b>https://www.cloudflare.com/small-business/</b></a></p> ]]></content:encoded>
            <category><![CDATA[Cloudflare Zero Trust]]></category>
            <category><![CDATA[Cloudflare Access]]></category>
            <category><![CDATA[Security]]></category>
            <category><![CDATA[Single Sign On (SSO)]]></category>
            <category><![CDATA[VPN]]></category>
            <guid isPermaLink="false">66FP5kREHBF2IPLYuVXlyD</guid>
            <dc:creator>Sam Rhea</dc:creator>
        </item>
        <item>
            <title><![CDATA[Introducing Single Sign-On for the Cloudflare Dashboard]]></title>
            <link>https://blog.cloudflare.com/introducing-single-sign-on-for-the-cloudflare-dashboard/</link>
            <pubDate>Wed, 10 Oct 2018 17:00:00 GMT</pubDate>
            <description><![CDATA[ As the  number of SaaS services people use everyday grows, it has become more challenging to juggle the number of password and multi-factor authentication combinations users have to keep track of to get online.  ]]></description>
            <content:encoded><![CDATA[ <img src="https://lh3.googleusercontent.com/1bH8yWBrrK65LHHelPvXaOyGbIZ5HD5CutVT2tHDubyZmJrUM7hYABags2vJhGSoERbt5KKDUSOilB-HmhVlKThYBdOx5LA27nhvJgOYLbHTWp6_I1IMKFU-0VMM_KUFzCwvwqc" />
    <div>
      <h3>The Challenge of Managing User Access to SaaS Applications</h3>
      <a href="#the-challenge-of-managing-user-access-to-saas-applications">
        
      </a>
    </div>
    <p>As the  number of SaaS services people use everyday grows, it has become more challenging to juggle the number of password and multi-factor authentication combinations users have to keep track of to get online.</p><p>Adopting identity services have allowed companies to centralize employee authentication. With <a href="https://www.cloudflare.com/products/cloudflare-access/">Cloudflare Access</a>, companies can ensure employees use a company managed identity provider when accessing websites behind Cloudflare. Last week, Sam <a href="/cloudflare-access-sharing-our-single-sign-on-plugin-for-atlassian/">published a blog</a> on how Cloudflare has made it easier to connect Cloudflare Access to the Atlassian suite of tools.</p><p>Since Cloudflare has simplified access control for corporate applications, many enterprise customers have commonly asked for the ability to extend the same ease of access and control to the Cloudflare dashboard itself.</p>
    <div>
      <h3>Single Sign-On for the Cloudflare Dashboard</h3>
      <a href="#single-sign-on-for-the-cloudflare-dashboard">
        
      </a>
    </div>
    <p>Today, we are announcing support for enterprise customers to use single sign-on (SSO) through their identity provider to access the Cloudflare dashboard.</p><p>Cloudflare is a critical piece of infrastructure for customers, and SSO ensures that customers can apply the same authentication policies to access the Cloudflare dashboard as other critical resources.</p><p>Once onboarded for SSO, all company user logins to the Cloudflare dashboard redirect to the customer’s identity provider. Once all required authentication checks complete successfully, the user is seamlessly redirected back to <a href="https://dash.cloudflare.com/">dash.cloudflare.com</a> and logged in.</p>
    <div>
      <h3>Leveraging Access &amp; Workers to Build SSO</h3>
      <a href="#leveraging-access-workers-to-build-sso">
        
      </a>
    </div>
    <p>At Cloudflare, we  dogfood our own services as both a way to make them better for our customers and to make developing new services more efficient and robust. With SSO, this is no different. Authentication configurations are managed through Access, which allows us to launch with support for the same <a href="https://developers.cloudflare.com/access/configuring-identity-providers/">identity providers</a> available in Access today, including SAML.</p><p><a href="/cloudflare-turns-8/">Cloudflare is 8 years old</a> and we built our user authentication system way before Cloudflare Access existed. In order to connect Access to our existing authentication system, we built a Cloudflare Worker that converts Access authentication tokens to our own authentication tokens. This greatly simplified the code changes required in our system, and results in faster SSO logins because the Worker runs at the network edge and reduces the number of round trips required to authenticate users.</p><p>In addition to leveraging Cloudflare services to build Single Sign-On, we are moving all Cloudflare employees to use SSO through our existing G Suite setup. This ensures Cloudflare can uniformly enforce multi-factor authentication policies for the services we protect with Cloudflare itself.</p>
    <div>
      <h3>How to Start using SSO for the Cloudflare Dashboard</h3>
      <a href="#how-to-start-using-sso-for-the-cloudflare-dashboard">
        
      </a>
    </div>
    <p><a href="https://www.cloudflare.com/plans/enterprise/">Cloudflare Enterprise</a> customers can reach out to their Customer Success Manager to learn how to start using SSO to log-in to the Cloudflare dashboard. If you are interested in using SSO yourself and becoming a Cloudflare Enterprise customer, then please <a href="https://www.cloudflare.com/plans/enterprise/contact/">get in touch</a>.</p> ]]></content:encoded>
            <category><![CDATA[Product News]]></category>
            <category><![CDATA[SaaS]]></category>
            <category><![CDATA[Dashboard]]></category>
            <category><![CDATA[Single Sign On (SSO)]]></category>
            <guid isPermaLink="false">70Gv0KF9h3csXNvUTuzs5i</guid>
            <dc:creator>Garrett Galow</dc:creator>
        </item>
    </channel>
</rss>