Cloud Foundry is a distributed system with many components front and back end. If you are familiar with the Cloud Foundry architecture you have probably noticed that the Cloud Controller exposes its functionality via lightweight HTTP APIs. The internal components also use the same approach to communicate with each other. Up until recently this was done using a custom authentication mechanism which had some drawbacks. This blog post will walk you through the changes that we are making in this area.

We created a new component to handle all external user-facing security concerns named the User Account and Authentication Service or UAA for short. It has been live in cloudfoundry.com since March 2012, and is now starting to play a big role in the interactions between Cloud Foundry users and the platform. This article explains the basic features of the UAA and the role that it plays for users and administrators of Cloud Foundry.

Design Goals of the UAA

Security is not something to skimp on during implementation. One way to be sure that you have the bases covered and to reassure users that their data is safe is to use standard protocols and interfaces because they have been vetted by many security engineers and reviewed by a board of approvers. Open standards tend to get a large community behind the implementation and documentation of client libraries and utilities, so they make it much easier to support a wide range of users. For that reason, we chose to use some of the latest and greatest open standards in the UAA, the most important of which is OAuth2. Also worth mentioning are SCIM and OpenID Connect (the latter spec is still unstable so we haven’t fully implemented it yet).

Quick Introduction to OAuth2

OAuth2 is a protocol enabling a Client application, often a web application, to act on behalf of a User, but with the User’s permission. The actions a Client is allowed to perform are carried out on a Resource Server (another web application or web service), and the User approves the actions by telling an Authorization Server that he trusts the Client to do what it is asking. Clients can also act as themselves (not on behalf of a User) if they are permitted to do so by the Authorization Server.

The Cloud Foundry UAA is an Authorization Server and also a Resource Server (e.g. for resources to do with user accounts). Another Resource Server in Cloud Foundry is the Cloud Controller, which is the main interface for managing user’s applications and services. There are some more detailed descriptions of authentication and authorization flows, including sequence diagrams, later in this article.

UAA Quick Start

The quickest way to see the UAA in action is to point your browser at http://uaa.cloudfoundry.com. If you have a Cloud Foundry account you can login and see a basic home page just confirming that you are authenticated. Log out by clicking on the link at the top right.

On a command line you can also interrogate the UAA a bit to see what it is doing:

The response tells you when the UAA was built, the git commit id from GitHub and the information it needs at its login endpoint to authenticate a user.

The code is also deployed with its default configuration as a Cloud Foundry app called devuaa: http://devuaa.cloudfoundry.com. You can use this deployment for testing if you don’t want to deploy it yourself. Out of the box, the UAA runs with an in-memory back end, and one user account (username: marissa, password: koala). To build the server yourself and see it working locally you can clone the project and follow the instructions in the README on GitHub.

The normal flow for a web application wishing to act on behalf of a user is the Authorization Code Flow. Here is a sequence diagram of the interactions when the user is already authenticated:

Sequence diagram, auth-code-flow, with an already authenticated user (steps 2-4) Out of the box, the UAA also has an OAuth2 client called app, so you can see part of the OAuth2 Authorization Code Flow by visiting this link in your browser. Log in as marissa and you might see the user approval page where marissa confirms that she allows the Client known as ‘app’ to access her profile data (scope=openid). You might not see that page because someone else may already have been there and approved the access and obtained an access token, so the server will not need to prompt again. The access token is a memo for the approval, so if no access token was granted, then you will see the approval page. Approve the grant by pressing the “Authorize” button and you should see the browser bounce back to http://localhost/nolink (intentionally non-existent) with a query parameter containing an authorization code.

Getting an access token is another step (which the Client application would normally take), exchanging the authorization code for the access token on the Token Endpoint at https://devuaa.cloudfoundry.com/oauth/token. There is no UI for the Token Endpoint, so nothing to see in the browser, but if you visit that location you should be prompted for authentication details because the Token Endpoint uses HTTP Basic to authenticate Client applications.

The command line client that most people use with Cloud Foundry is vmc. For historic and practical reasons, vmc collects user credentials directly on the command line, so it’s not a browser flow. The UAA advertises what credentials it requires on its /login endpoint, and vmc collects the data and sends it, getting a token in return. OAuth2 has a Resource Owner Password grant type that could have been used for the legacy Cloud Foundry, but is too restrictive for future purposes because it is limited to username-password authentication. Instead of using that, we used the Implicit Flow with a couple enhancements. This is how it works:

Sequence diagram, vmc-implicit-flow: For a detailed description of all the features of the UAA in version 1.0 see the UAA Reference Blog Post.

Login Server

The UAA can and does handle authentication of users with Cloud Foundry accounts. It only knows how to do username-password authentication, and only for registered users, which is fine for basic use cases, e.g., for vmc users who are accustomed to logging in with a password. To go beyond that, for instance to allow users to authenticate with social network accounts, or with an external identity provider like VMware Horizon, or an enterprise directory, you have two choices. Either 1) fork the UAA and modify the authentication filters and login UI, or 2) deploy another component that can handle authentication and delegate everything else to the UAA. We call 2) a Login Server, and that is the design we will be adopting soon in cloudfoundry.com. There are two sample apps (one in Java and one in Ruby) that show you how to implement a Login Server in the samples directory of the UAA.

The UAA handles all the user-facing security concerns in Cloud Foundry, and also provides some back-end services for other components in the platform, as well as some that can be used by a user’s own applications. Its primary role is as an OAuth2 Authorization Server, but many other services are provided in connection with user accounts and client registrations. We will soon be providing more detailed examples of how to use the UAA in the form of some more articles on the cloudfoundry.org and cloudfoundry.com blog sites. The range of services supported by the UAA and its registered clients is also expanding so watch out for blogs on new features.
[null, null, {"document_url": "https://content.pivotal.io/blog/introducing-the-uaa-and-security-for-cloud-foundry", "unformatted_src": "https://d1fto35gcfffzn.cloudfront.net/blog/images/2012/07/approval-page.png", "src": "https://d1fto35gcfffzn.cloudfront.net/blog/images/2012/07/approval-page.png", "formatted_filename": "approval page", "rendered_width": 640, "rendered_height": 460}, null, null, null, null, {"document_url": "https://content.pivotal.io/blog/introducing-the-uaa-and-security-for-cloud-foundry", "unformatted_src": "https://content.cdntwrk.com/mediaproxy?url=https%3A%2F%2Fcontent.cdntwrk.com%2Ffiles%2FaHViPTYzOTc1JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzViYmU4Zjc2MWJhZjQucG5nJnZlcnNpb249MDAwMCZzaWc9NGM5MDlkZDhiMjc3NmVjNzlhNDFhM2Y0OWVmNzA3Njg%25253D&size=1&version=1539286585&sig=6f412c7157c3d4787fc30059986498ee&default=hubs%2Ftilebg-blogs.jpg", "src": "https://content.cdntwrk.com/mediaproxy?url=https%3A%2F%2Fcontent.cdntwrk.com%2Ffiles%2FaHViPTYzOTc1JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzViYmU4Zjc2MWJhZjQucG5nJnZlcnNpb249MDAwMCZzaWc9NGM5MDlkZDhiMjc3NmVjNzlhNDFhM2Y0OWVmNzA3Njg%25253D&size=1&version=1539286585&sig=6f412c7157c3d4787fc30059986498ee&default=hubs%2Ftilebg-blogs.jpg", "alt_text": "How WWT Uses PCF and Automation to Increase Software Release Velocity"}, null, {"document_url": "https://content.pivotal.io/blog/introducing-the-uaa-and-security-for-cloud-foundry", "unformatted_src": "https://content.cdntwrk.com/mediaproxy?url=https%3A%2F%2Fcontent.cdntwrk.com%2Ffiles%2FaHViPTYzOTc1JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzViYmY2YzIwNDY1OWIucG5nJnZlcnNpb249MDAwMCZzaWc9NjU0MDU5NjYwOThhMzQyM2ZmOTQ3ZTkxMmI2YWIyODE%25253D&size=1&version=1539283183&sig=4b247d4f0443033f7145100ba83cf05b&default=hubs%2Ftilebg-blogs.jpg", "src": "https://content.cdntwrk.com/mediaproxy?url=https%3A%2F%2Fcontent.cdntwrk.com%2Ffiles%2FaHViPTYzOTc1JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzViYmY2YzIwNDY1OWIucG5nJnZlcnNpb249MDAwMCZzaWc9NjU0MDU5NjYwOThhMzQyM2ZmOTQ3ZTkxMmI2YWIyODE%25253D&size=1&version=1539283183&sig=4b247d4f0443033f7145100ba83cf05b&default=hubs%2Ftilebg-blogs.jpg", "alt_text": "Supporting LGBT Youth on National Coming Out Day "}, null, null, {"document_url": "https://content.pivotal.io/blog/introducing-the-uaa-and-security-for-cloud-foundry", "unformatted_src": "https://content.cdntwrk.com/mediaproxy?url=https%3A%2F%2Fcontent.cdntwrk.com%2Ffiles%2FaHViPTYzOTc1JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzViYTk2NDNhOTVhZjIucG5nJnZlcnNpb249MDAwMCZzaWc9YzgwNTA0YzRhNWJlZTliZmUxZjBhZGM2ODJlZTc4MjI%25253D&size=1&version=1539287926&sig=3e7405087c66cdd4947c6c397ea7977a&default=hubs%2Ftilebg-blogs.jpg", "src": "https://content.cdntwrk.com/mediaproxy?url=https%3A%2F%2Fcontent.cdntwrk.com%2Ffiles%2FaHViPTYzOTc1JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzViYTk2NDNhOTVhZjIucG5nJnZlcnNpb249MDAwMCZzaWc9YzgwNTA0YzRhNWJlZTliZmUxZjBhZGM2ODJlZTc4MjI%25253D&size=1&version=1539287926&sig=3e7405087c66cdd4947c6c397ea7977a&default=hubs%2Ftilebg-blogs.jpg", "alt_text": "Pivotal Cloud Foundry 2.3, Powered by Industrialized Open Source, Helps You Deliver Superior Business Outcomes. We Recap the Latest Release"}, null, {"document_url": "https://content.pivotal.io/blog/introducing-the-uaa-and-security-for-cloud-foundry", "unformatted_src": "https://content.cdntwrk.com/mediaproxy?url=https%3A%2F%2Fcontent.cdntwrk.com%2Ffiles%2FaHViPTYzOTc1JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzViYjc5MmIwOGVjZmUucG5nJnZlcnNpb249MDAwMCZzaWc9Mzg1NDYzM2Y4YzYyOWE1M2Y2N2ZjNDQyNmQyZjE5YzE%25253D&size=1&version=1538757548&sig=cca823374eb516acd7ccbd3eb104ba40&default=hubs%2Ftilebg-blogs.jpg", "src": "https://content.cdntwrk.com/mediaproxy?url=https%3A%2F%2Fcontent.cdntwrk.com%2Ffiles%2FaHViPTYzOTc1JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzViYjc5MmIwOGVjZmUucG5nJnZlcnNpb249MDAwMCZzaWc9Mzg1NDYzM2Y4YzYyOWE1M2Y2N2ZjNDQyNmQyZjE5YzE%25253D&size=1&version=1538757548&sig=cca823374eb516acd7ccbd3eb104ba40&default=hubs%2Ftilebg-blogs.jpg", "alt_text": "Why Should Developers Have All the Fun! Here's Your Guide to Cloud Foundry Summit Europe for Platform Operations Teams."}, null, {"document_url": "https://content.pivotal.io/blog/introducing-the-uaa-and-security-for-cloud-foundry", "unformatted_src": "https://content.cdntwrk.com/mediaproxy?url=https%3A%2F%2Fcontent.cdntwrk.com%2Ffiles%2FaHViPTYzOTc1JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzViYThmMDE4ZWRjM2UucG5nJnZlcnNpb249MDAwMCZzaWc9YmVjNmY5MTllNDMwNzc5NmNiOTQ1Y2UyMmI3Yjk0Yjg%25253D&size=1&version=1539287934&sig=0691946453fe163e53598f5cc1cb141b&default=hubs%2Ftilebg-blogs.jpg", "src": "https://content.cdntwrk.com/mediaproxy?url=https%3A%2F%2Fcontent.cdntwrk.com%2Ffiles%2FaHViPTYzOTc1JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzViYThmMDE4ZWRjM2UucG5nJnZlcnNpb249MDAwMCZzaWc9YmVjNmY5MTllNDMwNzc5NmNiOTQ1Y2UyMmI3Yjk0Yjg%25253D&size=1&version=1539287934&sig=0691946453fe163e53598f5cc1cb141b&default=hubs%2Ftilebg-blogs.jpg", "alt_text": "PKS 1.2 Adds AWS: More Multi-cloud for Your Kubernetes"}, null, {"document_url": "https://content.pivotal.io/blog/introducing-the-uaa-and-security-for-cloud-foundry", "unformatted_src": "https://content.cdntwrk.com/mediaproxy?url=https%3A%2F%2Fcontent.cdntwrk.com%2Ffiles%2FaHViPTYzOTc1JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzViYjY5YTE4ZjJkOTIucG5nJnZlcnNpb249MDAwMCZzaWc9ZTEyMzRkNDIyNTgzZjAxNGJkOGFlYzc5Y2JmZTkxYTc%25253D&size=1&version=1538769481&sig=584165cc5d0752e452c81bac762c8fac&default=hubs%2Ftilebg-blogs.jpg", "src": "https://content.cdntwrk.com/mediaproxy?url=https%3A%2F%2Fcontent.cdntwrk.com%2Ffiles%2FaHViPTYzOTc1JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzViYjY5YTE4ZjJkOTIucG5nJnZlcnNpb249MDAwMCZzaWc9ZTEyMzRkNDIyNTgzZjAxNGJkOGFlYzc5Y2JmZTkxYTc%25253D&size=1&version=1538769481&sig=584165cc5d0752e452c81bac762c8fac&default=hubs%2Ftilebg-blogs.jpg", "alt_text": "Take the Headache out of Production Deployments: Continuous Delivery to the Cloud with Pivotal Cloud Foundry and Spinnaker"}, null, {"document_url": "https://content.pivotal.io/blog/introducing-the-uaa-and-security-for-cloud-foundry", "unformatted_src": "https://content.cdntwrk.com/mediaproxy?url=https%3A%2F%2Fcontent.cdntwrk.com%2Ffiles%2FaHViPTYzOTc1JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzViYjQ4MzNjOWM2NmEuanBnJnZlcnNpb249MDAwMCZzaWc9YmRkYmUxM2E4MjNhNTk3ZjVlM2ViZjI2ZTNmODRlNGE%25253D&size=1&version=1538556820&sig=48de7dfb39b3ec2933f955b63b4c5a92&default=hubs%2Ftilebg-blogs.jpg", "src": "https://content.cdntwrk.com/mediaproxy?url=https%3A%2F%2Fcontent.cdntwrk.com%2Ffiles%2FaHViPTYzOTc1JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzViYjQ4MzNjOWM2NmEuanBnJnZlcnNpb249MDAwMCZzaWc9YmRkYmUxM2E4MjNhNTk3ZjVlM2ViZjI2ZTNmODRlNGE%25253D&size=1&version=1538556820&sig=48de7dfb39b3ec2933f955b63b4c5a92&default=hubs%2Ftilebg-blogs.jpg", "alt_text": "This Month in Spring - October 2nd, 2018"}, null, {"document_url": "https://content.pivotal.io/blog/introducing-the-uaa-and-security-for-cloud-foundry", "unformatted_src": "https://content.cdntwrk.com/mediaproxy?url=https%3A%2F%2Fcontent.cdntwrk.com%2Ffiles%2FaHViPTYzOTc1JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzViYjM5Y2FiMjkzM2MucG5nJnZlcnNpb249MDAwMCZzaWc9NzY3MDRiNjRkZGY3MmQ2ZjE4ZTBlOGRjODAxMTVjZmE%25253D&size=1&version=1539287948&sig=26ed0a52bce7ba8fa15ecfbc91982a66&default=hubs%2Ftilebg-blogs.jpg", "src": "https://content.cdntwrk.com/mediaproxy?url=https%3A%2F%2Fcontent.cdntwrk.com%2Ffiles%2FaHViPTYzOTc1JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzViYjM5Y2FiMjkzM2MucG5nJnZlcnNpb249MDAwMCZzaWc9NzY3MDRiNjRkZGY3MmQ2ZjE4ZTBlOGRjODAxMTVjZmE%25253D&size=1&version=1539287948&sig=26ed0a52bce7ba8fa15ecfbc91982a66&default=hubs%2Ftilebg-blogs.jpg", "alt_text": "Need to Improve Your Build Pipelines? Writing Too Much YAML? Then Head to Cloud Foundry Summit Europe. Here's Our Show Preview."}, null, {"document_url": "https://content.pivotal.io/blog/introducing-the-uaa-and-security-for-cloud-foundry", "unformatted_src": "https://content.cdntwrk.com/mediaproxy?url=https%3A%2F%2Fcontent.cdntwrk.com%2Ffiles%2FaHViPTYzOTc1JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzViYWNjYmNhYWMzY2IucG5nJnZlcnNpb249MDAwMCZzaWc9NmEyYzBmMGNjNDE0Yzc1YjJmYjQ0NjdmNzQyZWI0NjE%25253D&size=1&version=1539287948&sig=4fe18b7e534f223719d2a35b80314108&default=hubs%2Ftilebg-blogs.jpg", "src": "https://content.cdntwrk.com/mediaproxy?url=https%3A%2F%2Fcontent.cdntwrk.com%2Ffiles%2FaHViPTYzOTc1JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzViYWNjYmNhYWMzY2IucG5nJnZlcnNpb249MDAwMCZzaWc9NmEyYzBmMGNjNDE0Yzc1YjJmYjQ0NjdmNzQyZWI0NjE%25253D&size=1&version=1539287948&sig=4fe18b7e534f223719d2a35b80314108&default=hubs%2Ftilebg-blogs.jpg", "alt_text": "Your Pathway to the Cloud is Open; Day 4 at SpringOne Platform 2018"}, null, {"document_url": "https://content.pivotal.io/blog/introducing-the-uaa-and-security-for-cloud-foundry", "unformatted_src": "https://content.cdntwrk.com/mediaproxy?url=https%3A%2F%2Fcontent.cdntwrk.com%2Ffiles%2FaHViPTYzOTc1JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzViYWJkODM0NjY0YjQucG5nJnZlcnNpb249MDAwMCZzaWc9YmQ0NzY0MDgzMGFkZWNmNTI3OTIyMzNmYzU5NmNhOGU%25253D&size=1&version=1537990807&sig=84e673b273ca4b71bc741db73bf70dda&default=hubs%2Ftilebg-blogs.jpg", "src": "https://content.cdntwrk.com/mediaproxy?url=https%3A%2F%2Fcontent.cdntwrk.com%2Ffiles%2FaHViPTYzOTc1JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzViYWJkODM0NjY0YjQucG5nJnZlcnNpb249MDAwMCZzaWc9YmQ0NzY0MDgzMGFkZWNmNTI3OTIyMzNmYzU5NmNhOGU%25253D&size=1&version=1537990807&sig=84e673b273ca4b71bc741db73bf70dda&default=hubs%2Ftilebg-blogs.jpg", "alt_text": "Secure Software, Happy Developers and Cost-effective Applications, All with Spring"}, null, {"document_url": "https://content.pivotal.io/blog/introducing-the-uaa-and-security-for-cloud-foundry", "unformatted_src": "https://content.cdntwrk.com/mediaproxy?url=https%3A%2F%2Fcontent.cdntwrk.com%2Ffiles%2FaHViPTYzOTc1JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzViYWNlOTc2ZTkyOTguanBnJnZlcnNpb249MDAwMCZzaWc9MGM5ZGE2OTRkMTQwMDJkMDk0NzdmNzRlNzMxM2RkM2M%25253D&size=1&version=1539287942&sig=d911db4f360f0fcdae5db78df29ba44f&default=hubs%2Ftilebg-blogs.jpg", "src": "https://content.cdntwrk.com/mediaproxy?url=https%3A%2F%2Fcontent.cdntwrk.com%2Ffiles%2FaHViPTYzOTc1JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzViYWNlOTc2ZTkyOTguanBnJnZlcnNpb249MDAwMCZzaWc9MGM5ZGE2OTRkMTQwMDJkMDk0NzdmNzRlNzMxM2RkM2M%25253D&size=1&version=1539287942&sig=d911db4f360f0fcdae5db78df29ba44f&default=hubs%2Ftilebg-blogs.jpg", "alt_text": "TUTORIAL: Protect Your External Service Credentials with Service Instance Sharing and the CredHub Service Broker. We Explain How."}, null, {"document_url": "https://content.pivotal.io/blog/introducing-the-uaa-and-security-for-cloud-foundry", "unformatted_src": "https://content.cdntwrk.com/mediaproxy?url=https%3A%2F%2Fcontent.cdntwrk.com%2Ffiles%2FaHViPTYzOTc1JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzViYWJiNGI4NGNlYjQucG5nJnZlcnNpb249MDAwMCZzaWc9NTQxMTM2NDY4M2NkM2RjYTBlOTUyNTcxYmNmOTBlZGU%25253D&size=1&version=1539287941&sig=8d505d8ebd7706e6a15401f04250dbbd&default=hubs%2Ftilebg-blogs.jpg", "src": "https://content.cdntwrk.com/mediaproxy?url=https%3A%2F%2Fcontent.cdntwrk.com%2Ffiles%2FaHViPTYzOTc1JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzViYWJiNGI4NGNlYjQucG5nJnZlcnNpb249MDAwMCZzaWc9NTQxMTM2NDY4M2NkM2RjYTBlOTUyNTcxYmNmOTBlZGU%25253D&size=1&version=1539287941&sig=8d505d8ebd7706e6a15401f04250dbbd&default=hubs%2Ftilebg-blogs.jpg", "alt_text": "The Networked World; Day 3 at SpringOne Platform 2018"}, null, {"document_url": "https://content.pivotal.io/blog/introducing-the-uaa-and-security-for-cloud-foundry", "unformatted_src": "https://content.cdntwrk.com/mediaproxy?url=https%3A%2F%2Fcontent.cdntwrk.com%2Ffiles%2FaHViPTYzOTc1JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzViYjM5NDZhZDY1YTUucG5nJnZlcnNpb249MDAwMCZzaWc9ZjYzZjIzMzAyZjljMzZmMjkwZjI2OTI4MTEwZjRlMTg%25253D&size=1&version=1538499069&sig=4dea49c36ef80096eae2f363c74607cc&default=hubs%2Ftilebg-blogs.jpg", "src": "https://content.cdntwrk.com/mediaproxy?url=https%3A%2F%2Fcontent.cdntwrk.com%2Ffiles%2FaHViPTYzOTc1JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzViYjM5NDZhZDY1YTUucG5nJnZlcnNpb249MDAwMCZzaWc9ZjYzZjIzMzAyZjljMzZmMjkwZjI2OTI4MTEwZjRlMTg%25253D&size=1&version=1538499069&sig=4dea49c36ef80096eae2f363c74607cc&default=hubs%2Ftilebg-blogs.jpg", "alt_text": "Continuous Delivery to the Cloud Wreaks of Humanity (and That\u2019s a Good Thing!)"}, null, {"document_url": "https://content.pivotal.io/blog/introducing-the-uaa-and-security-for-cloud-foundry", "unformatted_src": "https://content.cdntwrk.com/mediaproxy?url=https%3A%2F%2Fcontent.cdntwrk.com%2Ffiles%2FaHViPTYzOTc1JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzViYjJjNjBmZDc5MjEucG5nJnZlcnNpb249MDAwMCZzaWc9MjNmMWM4MDg2OWQ3NzcyZjRhODdlNTFkOWJkMzA5OGE%25253D&size=1&version=1538580661&sig=0f69bcf0660a91340d7c90c2bf5c6946&default=hubs%2Ftilebg-blogs.jpg", "src": "https://content.cdntwrk.com/mediaproxy?url=https%3A%2F%2Fcontent.cdntwrk.com%2Ffiles%2FaHViPTYzOTc1JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzViYjJjNjBmZDc5MjEucG5nJnZlcnNpb249MDAwMCZzaWc9MjNmMWM4MDg2OWQ3NzcyZjRhODdlNTFkOWJkMzA5OGE%25253D&size=1&version=1538580661&sig=0f69bcf0660a91340d7c90c2bf5c6946&default=hubs%2Ftilebg-blogs.jpg", "alt_text": "Peace of Mind for Developers and Operators: Buildpacks is now a CNCF project. Welcome Cloud Native Buildpacks!"}, null, {"document_url": "https://content.pivotal.io/blog/introducing-the-uaa-and-security-for-cloud-foundry", "unformatted_src": "https://content.cdntwrk.com/mediaproxy?url=https%3A%2F%2Fcontent.cdntwrk.com%2Ffiles%2FaHViPTYzOTc1JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzViYWNlZGEwNGNlOTYucG5nJnZlcnNpb249MDAwMCZzaWc9M2EzN2YxN2U2ZmQ4MjhhNjFhNmRlMzRjNzkwNDFjODk%25253D&size=1&version=1538067524&sig=4d38002d6cf9579c7a56da625dddfab1&default=hubs%2Ftilebg-blogs.jpg", "src": "https://content.cdntwrk.com/mediaproxy?url=https%3A%2F%2Fcontent.cdntwrk.com%2Ffiles%2FaHViPTYzOTc1JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzViYWNlZGEwNGNlOTYucG5nJnZlcnNpb249MDAwMCZzaWc9M2EzN2YxN2U2ZmQ4MjhhNjFhNmRlMzRjNzkwNDFjODk%25253D&size=1&version=1538067524&sig=4d38002d6cf9579c7a56da625dddfab1&default=hubs%2Ftilebg-blogs.jpg", "alt_text": "8 1/2 Things We Learned at SpringOne Platform: New Ideas and Key Affirmations for the Modern Enterprise."}, null, {"document_url": "https://content.pivotal.io/blog/introducing-the-uaa-and-security-for-cloud-foundry", "unformatted_src": "https://content.cdntwrk.com/mediaproxy?url=https%3A%2F%2Fcontent.cdntwrk.com%2Ffiles%2FaHViPTYzOTc1JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzViYWJlY2RmMjcyMTkucG5nJnZlcnNpb249MDAwMCZzaWc9MGY1ZDY3ZDA4M2ViMDYyNjZhYzM0NjQ2MThhYzk5ZTM%25253D&size=1&version=1537995619&sig=0f859c7ce4ee441e3ca3609a5bf94fb3&default=hubs%2Ftilebg-blogs.jpg", "src": "https://content.cdntwrk.com/mediaproxy?url=https%3A%2F%2Fcontent.cdntwrk.com%2Ffiles%2FaHViPTYzOTc1JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzViYWJlY2RmMjcyMTkucG5nJnZlcnNpb249MDAwMCZzaWc9MGY1ZDY3ZDA4M2ViMDYyNjZhYzM0NjQ2MThhYzk5ZTM%25253D&size=1&version=1537995619&sig=0f859c7ce4ee441e3ca3609a5bf94fb3&default=hubs%2Ftilebg-blogs.jpg", "alt_text": "Multi-Cloud and Data Replication Over a Wide Area Network: A High Interest Topic At SpringOne Platform"}, null, {"document_url": "https://content.pivotal.io/blog/introducing-the-uaa-and-security-for-cloud-foundry", "unformatted_src": "https://content.cdntwrk.com/mediaproxy?url=https%3A%2F%2Fcontent.cdntwrk.com%2Ffiles%2FaHViPTYzOTc1JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzViYWE5MWQ5M2M0MTIucG5nJnZlcnNpb249MDAwMCZzaWc9ZjM5ZWQ4MWJjNDlhMWU0ZGJmNTg2MTY2OGJlMDQ4NzE%25253D&size=1&version=1539360431&sig=ecf99e75b66a4c9e7f4ef4883ca384b7&default=hubs%2Ftilebg-blogs.jpg", "src": "https://content.cdntwrk.com/mediaproxy?url=https%3A%2F%2Fcontent.cdntwrk.com%2Ffiles%2FaHViPTYzOTc1JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzViYWE5MWQ5M2M0MTIucG5nJnZlcnNpb249MDAwMCZzaWc9ZjM5ZWQ4MWJjNDlhMWU0ZGJmNTg2MTY2OGJlMDQ4NzE%25253D&size=1&version=1539360431&sig=ecf99e75b66a4c9e7f4ef4883ca384b7&default=hubs%2Ftilebg-blogs.jpg", "alt_text": "Announcing Pivotal Act, A Program to Help the Humanitarian Sector Build Technology"}, null, {"document_url": "https://content.pivotal.io/blog/introducing-the-uaa-and-security-for-cloud-foundry", "unformatted_src": "https://content.cdntwrk.com/mediaproxy?url=https%3A%2F%2Fcontent.cdntwrk.com%2Ffiles%2FaHViPTYzOTc1JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzViOTg4OWU3NGI1YzEucG5nJnZlcnNpb249MDAwMCZzaWc9MzYyNjRjMjg2ZDBlN2E4NzQ3N2IxMWExNjJlMTAxZjY%25253D&size=1&version=1537478039&sig=beae16d04e46e1c879d3e0782469eea7&default=hubs%2Ftilebg-blogs.jpg", "src": "https://content.cdntwrk.com/mediaproxy?url=https%3A%2F%2Fcontent.cdntwrk.com%2Ffiles%2FaHViPTYzOTc1JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzViOTg4OWU3NGI1YzEucG5nJnZlcnNpb249MDAwMCZzaWc9MzYyNjRjMjg2ZDBlN2E4NzQ3N2IxMWExNjJlMTAxZjY%25253D&size=1&version=1537478039&sig=beae16d04e46e1c879d3e0782469eea7&default=hubs%2Ftilebg-blogs.jpg", "alt_text": "For IT Pros Working in Government and the Armed Forces, SpringOne Platform is an Essential Conference. Here's Your Agenda."}, null, {"document_url": "https://content.pivotal.io/blog/introducing-the-uaa-and-security-for-cloud-foundry", "unformatted_src": "https://content.cdntwrk.com/mediaproxy?url=https%3A%2F%2Fcontent.cdntwrk.com%2Ffiles%2FaHViPTYzOTc1JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzViYWJiNGQ2MTExY2QucG5nJnZlcnNpb249MDAwMCZzaWc9ZTgyOWYxZWQyNGM2ZDQzNjAyY2ZkM2IxMjI5MWQ4MjI%25253D&size=1&version=1539287953&sig=c95cef42f2657b3b21fdcb61d502cf35&default=hubs%2Ftilebg-blogs.jpg", "src": "https://content.cdntwrk.com/mediaproxy?url=https%3A%2F%2Fcontent.cdntwrk.com%2Ffiles%2FaHViPTYzOTc1JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzViYWJiNGQ2MTExY2QucG5nJnZlcnNpb249MDAwMCZzaWc9ZTgyOWYxZWQyNGM2ZDQzNjAyY2ZkM2IxMjI5MWQ4MjI%25253D&size=1&version=1539287953&sig=c95cef42f2657b3b21fdcb61d502cf35&default=hubs%2Ftilebg-blogs.jpg", "alt_text": "The Ever-Expanding, Run-All-The Things Platform; Day 2 at SpringOne Platform 2018"}, null, null]