Authentication. Check out these additional journeys for more information on how AEM’s powerful features work together. Tests for running tests and analyzing the. Created for: Beginner. This capability allows AEM to further cache content within the scope of GraphQL queries that can then be assembled as blocks in JSON output rather than line by line. Please ensure that the previous chapters have been completed before proceeding with this chapter. <br><br>@Organization<br>Experienced in leading a delivery department with. Learn how to model content and build a schema with Content Fragment Models in AEM. Experience League. AEM GraphQL configuration issues. src/api/aemHeadlessClient. This is the same framework used to translate other AEM content, such as Pages, Experience Fragments, Assets, and Forms. To get started with GraphQL queries and how they work with AEM Content Fragments, it helps to see some practical examples. The content in AEM is managed through Content Framnents and exposed through GraphQL API as a JSON. The WKND client application connects to AEM publish service, so it is important that you published the following to the AEM publish service. GraphiQL is included in all environments of AEM (but will only be accessible/visible when you configure your endpoints). This guide uses the AEM as a Cloud Service SDK. Some content is managed in AEM and some in an external system. Prerequisites. The AEM as a Cloud Service Developer Console is used to generate tokens needed for the authentication process. Update cache-control parameters in persisted queries. js using Apollo Client. See full list on experienceleague. How to use Clone the adobe/aem-guides. Basic Guidelines: Content Fragment Models and GraphQL Queries for AEM Headless Implementation. Browse the following tutorials based on the technology used. Tutorials by framework. 7 - GraphQL Persisted Queries; Basic Tutorial. These endpoints need to be created, and published, so that they can be accessed securely. But it’s no secret that Magento’s built-in CMS doesn’t go far when your business scales. GraphQL Authorization. Prerequisites. Select aem-headless-quick-setup-wknd in the Repository select box. In this chapter, you use the GraphiQL Explorer to define more advanced queries to gather data of the. For example: AEM is accessed via: SPA is accessed via Since AEM and the SPA are accessed from different domains, web browsers enforce security policies such as cross-origin resource sharing. One simple way to add authentication to your project is with Okta. In this example, we’re restricting the content type to only images. AEM Headless is a CMS solution from Experience Manager that allows structured content (Content Fragments) in AEM to be consumed by any app over HTTP using GraphQL. Token-based authentication to AEM as a Cloud Service. APIs are mostly exposed to external users who are. Without Introspection and the Schema, tools like these wouldn't exist. Search for “GraphiQL” (be sure to include the i in GraphiQL ). You can define that schema in something called GQL, GraphQL Query Language but you can also decorate classes to respond to. In ASP. Navigate to Tools > Security > Users, and select authentication-service user, and select Properties from the top action bar. Download the latest GraphiQL Content Package v. This guide uses the AEM as a Cloud Service SDK. These remote queries may require authenticated API access to secure headless content delivery. We recommend upgrading from 3. The following are examples of possible approaches for constructing URLs for AEM GraphQL API and image requests, for several popular headless frameworks and platforms. If your modeling requirements require further restriction, there are some other options available. Experience LeagueAnatomy of the React app. GraphQL Authenticating Client - Authentication is the process or action of verifying the identity of a user or a process. In the basic tutorial multi-step GraphQL tutorial, you used the GraphiQL Explorer to test and refine the GraphQL queries. With Explore{} you can browse through the data to with semantic search, and a slightly. This document is part of a multi-part tutorial. Authentication using Auth0. This session dedicated to the query builder is useful for an. The WKND client application connects to AEM publish service, so it is important that you published the following to the AEM publish service. js implements custom React hooks. If your modeling requirements require further restriction, there are some other options available. g. Review the AEMHeadless object. This is a core feature of the AEM Dispatcher caching strategy. Metadata is the information that describes a Content Fragment, such as the title of a Content Fragment, the thumbnail path, the description of a Content Fragment, the date it was created, amongst others. However, I checked on Software Distribution but could not find the tooling (Managed Service version) of "GraphiQL" to download: (. Metadata is the information that describes a Content Fragment, such as the title of a Content Fragment, the thumbnail path, the description of a Content Fragment, the date it was created, amongst others. Authentication methods in Microsoft Entra ID include password and phone (for example, SMS and voice calls), which are manageable in Microsoft Graph today, among many others such as FIDO2 security keys and the Microsoft Authenticator app. Tap the ellipsis next to the environment in the Environments section, and select Developer Console. The React app should contain one. c) If successful, the server returns a JSON Web Token (JWT) that is a Base64 encoded token with an expiration date. Created for: Beginner. zip. If you're looking to learn more after this tutorial, we (the maintainers) have written a book!The AEM CIF Core Components together with the AEM CIF Add-On offer authoring and frontend integration between AEM (Adobe Experience Manager) and Adobe Commerce. Metadata is the information that describes a Content Fragment, such as the title of a Content Fragment, the thumbnail path, the description of a Content Fragment, the date it was created, amongst others. An implementation of the standard GraphiQL IDE is available for use with the GraphQL API of Adobe Experience Manager (AEM). Prerequisites. 7 - GraphQL Persisted Queries; Basic Tutorial. ” Source This is a very good sign and we are excited what the future will bring for AEM Headless with GraphQL. js 2 GraphQL Authentication and Authorization in Node. Once the schema is successfully. Specify JWT. This architecture features some inherent performance flaws, but is fast to implement and. Anatomy of the React app. Prerequisites. This is what defines the different types and allows you to say what the client can query. Authentication is the process of verifying a user's identity, while authorization is the process of granting access to resources based on the user's identity and the permissions they have. Rest APIs require the client to send multiple requests to different endpoints on the API to query data from the backend database. Tap the Technical Accounts tab. An end-to-end tutorial illustrating how to build-out and expose content using AEM Headless. Start yout command prompt and go to your project folder: cd F:javascript-projectsexpress-projectsgqlapi npm run. Define Content Model Structure; Create Content. js file. In this video you will: Understand the power behind the GraphQL language. Available for use by all sites. js application demonstrates how to query content using AEM’s GraphQL APIs using persisted queries. 5 the GraphiQL IDE tool must be manually installed. To determine the correct approach for managing build dependent configurations, reference the AEM Headless app’s framework (for example, React, iOS, Android™, and so on) documentation, as the approach varies by framework. Wrap the React app with an initialized ModelManager, and render the React app. js v18; Git; 1. I love to have your feedback, suggestions, and. Review the AEMHeadless object. Next, explore the power of AEM’s GraphQL API using the built-in GraphiQL IDE. Example applications are a great way to explore the headless capabilities of Adobe Experience Manager (AEM). Please ensure that the previous chapters have been completed before proceeding with this chapter. GraphiQL is included in all environments of AEM (but will only be accessible/visible when you configure your endpoints). (Not on AEM as a cloud service) In our case, AEM will be the resource owner, 3rd party application will be client and OKTA will be the authorization server. 5. A client-side REST wrapper #. Learn how AEM automatically generates a GraphQL schema based on a Content Fragment model. Please ensure that the previous chapters have been completed before proceeding with this chapter. Authentication methods are the ways that users authenticate in Microsoft Entra ID. Limited content can be edited within AEM. Author in-context a portion of a remotely hosted React. Tap on the download button in the top-left corner to download the JSON file containing accessToken value, and save the JSON file to a safe location on your development machine. Check that the user can login to the web interface of Bitbucket Server and answer the. For server-to-server authentication, you can use Service Credentials of AEM (Access tokens). 5 . 4. The AEM Headless quick setup gets you hands-on with AEM Headless using content from the WKND Site sample project, and a sample React App (a SPA) that consumes the content over AEM Headless GraphQL APIs. The sample React app has three main parts: The src/api folder contains files used to make GraphQL queries to AEM. Update cache-control parameters in persisted queries. Prerequisites. To securely setup AEM GraphQL for use with Content Fragments and your apps you need to configure various components. Content Fragments in AEM provide structured content management. Tutorials by framework. It requires a little Spring and Java knowledge. In a REST architecture, the client makes an HTTP request and data is sent as an HTTP response, while in GraphQL, the client requests data with queries. GraphQL in Adobe Experience Manager (AEM) is a query language and runtime APIs that allows to request exactly the data which we need. Get{} functions are used to easily retrieve data from your Weaviate instance, while Aggregate{} is used to obtain meta information about data objects and its properties. Using the Access Token in a GraphQL Request. Last update: 2023-10-02. com Depending on your instance, you can directly access the GraphiQL interface included with AEM GraphQL API for submitting and testing queries. To support AEM GraphQL persisted queries, add the following pattern: /graphql/execute. 0 @okta/okta-auth-js@5. In this section, we will learn how to authenticate a GraphQL client. setDefaultHeader ( "X-request-id", "100004f00ab5" ); We can clear the global headers anytime: Unirest. Retrieving an Access Token. Explore AEM's GraphQL APIs using the built-in GrapiQL IDE. js initializes and exports the AEM Headless Client used to communicate with AEM; src/api/usePersistedQueries. GraphQL API. The AEM GraphQL API allows you to update the default cache-control parameters to your queries in order to. This end-to-end tutorial continues the basic tutorial that covered the fundamentals of Adobe Experience Manager (AEM) Headless and GraphQL. Please ensure that the previous chapters have been completed before proceeding with this chapter. The following are examples of possible approaches for constructing URLs for AEM GraphQL API and image requests, for several popular headless frameworks and platforms. AEM GraphQL API requests. Create or open the keystore. Headless implementation forgoes page and component management, as is traditional in. In this example, we’re restricting the content type to only images. Authentication Apollo Graphql for android. This guide uses the AEM as a Cloud Service SDK. Upload and install the package (zip file) downloaded in the previous step. Query for fragment and content references including references from multi-line text fields. To access the GraphQL endpoint, a CORS policy must be configured and added to an AEM Project that is deployed to AEM via Cloud Manager. The WKND client application connects to AEM publish service, so it is important that you published the following to the AEM publish service. Learn how Experience Manager as a Cloud. In this chapter, you use the GraphiQL Explorer to define more advanced queries to gather data of the Content. It was developed by Facebook and is now used by many popular companies such as. Once we have the Content Fragment data, we’ll integrate it into your React app. Complete the quick setup for AEM as a Cloud Service to configure your AEM as a Cloud Service. The HTTP GET requests from the headless app to AEM’s GraphQL APIs must be configured to interact with the correct AEM service, as. Experienced in designing and delivering Content Management Systems in Adobe Experience Manager. Subsequently, our custom authenticator will then sign the user if it has already been created in AEM. Please ensure that the previous chapters have been completed before proceeding with this chapter. Explore the AEM GraphQL API. Start your GraphQL API in your local machine. Prerequisites. Topics: Created for: Description Environment. Adobe Experience Manager as a Cloud Service’s Cross-Origin Resource Sharing (CORS) facilitates non-AEM web properties to make browser-based client-side calls to AEM’s GraphQL APIs, and other AEM Headless resources. js, Prisma & GraphQL The series covers the following: Data modeling using Prisma. Clients can send an HTTP GET request with the query name to execute it. Implement to run AEM GraphQL persisted queries. The GraphQL endpoints are publicly accessible, but the content that they return depends on user's access. 5 . We’ll look at the benefits of GraphQL, the GraphQL tooling available in AEM, and simple and advanced GraphQL query creation. There are many different approaches and strategies to handle authentication. For authentication, the third-party service must retrieve an Access Token that can then be used in the GraphQL Request. . For example if you want to use the HMAC. In this chapter, you use the GraphiQL Explorer to define more advanced queries to gather data of the Content. This fulfills a basic requirement of GraphQL. Overview; 1 - Create Content Fragment Models; 2 - Author Content Fragments; 3 - Explore the AEM GraphQL API; 4 - Persisted GraphQL. How to use Clone the adobe/aem-guides-wknd-graphql repository: Tap the Local token tab. If a JWT is present but validation of the JWT fails, the router rejects the request. Tap in the Integrations tab. See how AEM powers omni-channel experiences. Learn how Experience Manager as a Cloud Service works and what the software can do for you. directly; for. Create Content Fragments based on the. Next, we’ll use the AEM Headless SDK to retrieve Content Fragment data from AEM’s GraphQL APIs. These endpoints are usually publicly available, or can be connected via private VPN or local connections depending on the individual project setup. Specify a secret key in the appsettings. Today, we are introducing an option to easily import schemas for your GraphQL requests. Next, explore the power of AEM’s GraphQL API using the built-in GraphiQL Explorer. I want to set-up authentication on GraphQL endpoint before sharing it with third-party Apps. AEM has a large list of available content types and you’re able to select zero or more. Prerequisites. Select GraphQL to create a new GraphQL API. 5. This doesn't mean that there aren't solutions for these issues when using GraphQL, just that they're outside the description about what GraphQL is and instead. Hasura GraphQL Engine utilizes session variables, with specific user, role, organization and any other information you may need to determine the data access rights of the. d) To use the authentication token, your future requests. An end-to-end tutorial illustrating how to build-out and expose content using AEM Headless. Authentication can provide context to a session and personalize the type of data that a user sees. The GraphiQL tool also enables users to persist or save queries to be used by client applications in a production setting. Manage. If you require a single result: ; use the model name; eg city . This document is part of a multi-part tutorial. Once we have the Content Fragment data, we’ll. Apply mode ALL_OR_EMPTY (on arrays/multi-value fields) didn’t return fragments with null values for. Learn about advanced queries using filters, variables, and directives. See Submitting your Documents for Authentication. Next, explore the power of AEM’s GraphQL API using the built-in GraphiQL Explorer. Build a React JS app using GraphQL in a pure headless scenario. Example: if one sets up CUG, the results returned will be based on user's session. GraphQL, a flexible query language for APIs, provides an efficient and precise way to request specific data from your AEM instance, enabling a seamless integration between React and AEM. Level 3: Embed and fully enable SPA in AEM. Learn. Select Create. Adobe Experience Manager as a Cloud Service’s Cross-Origin Resource Sharing (CORS) facilitates non-AEM web properties to make browser-based client-side calls to AEM’s GraphQL APIs, and other AEM Headless resources. Learn about the various data types used to build out the Content Fragment Model. Learn how to deep link to other Content Fragments within a. Please ensure that the previous chapters have been completed before proceeding with this chapter. Next. The following are examples of possible approaches for constructing URLs for AEM GraphQL API and image requests, for several popular headless frameworks and platforms. Retrieving an Access Token. The GraphiQL tool enables developers to create and test queries against content on the current AEM environment. GraphQL API. While client-side GraphQL queries can also be executed using HTTP POST requests, which cannot be cached, persisted queries can. Explore how an external application can programmatically authenticate and interact with AEM as a Cloud Service over HTTP using Local Development Access Tokens and Service Credentials. The zip file is an AEM package that can be installed directly. supports headless CMS scenarios where external client applications render experiences using content managed in AEM. In this chapter, you use the GraphiQL Explorer to define more advanced queries to gather data of the. Persisted queries are queries that are stored on the Adobe Experience Manager (AEM) server. Learn how to create GraphQL queries to return content from Adobe Experience Manager (AEM) and how to use the GraphiQL tool to quickly test, refine, and debug queries. You also need to specify what columns you want, like so: { resource { column, column2 } } To query with a parameter you would instead type like so:Now let’s set HTTP headers for all our requests: Unirest. The GraphQL schema might be the most interesting part of this code. We are going to spin off a simple GraphQL server using express-graphql and get it connected to a MySQL database. Author in-context a portion of a remotely hosted React application. “Hasura Cloud provided a faster and low-code way of accessing data, while adhering to security best practices. Understand how to publish GraphQL endpoints. For testing and development, you can also access the AEM GraphQL API directly using the GraphiQL interface. First, create a GraphQL directory: mkdir GraphQL. As a first step, we build a schema (defining types, queries, mutations, and subscriptions). If creating a keystore, keep the password safe. This guide uses the AEM as a Cloud Service SDK. 4. It becomes more difficult to store your assets,. The GraphQL API in AEM allows you to expose Content Fragment data to downstream applications. Adobe Experience Manager as a Cloud Service’s Cross-Origin Resource Sharing (CORS) facilitates non-AEM web properties to make browser-based client-side calls to AEM’s GraphQL APIs, and other AEM Headless resources. To get started with GraphQL queries and how they work with AEM Content Fragments, it helps to see some practical examples. The GraphiQL tool also enables users to persist or save queries to be used by client applications in a production setting. AEM GraphQL API. The WKND client application connects to AEM publish service, so it is important that you published the following to the AEM publish service. The WKND client application connects to AEM publish service, so it is important that you published the following to the AEM publish service. The multi-line text field is a data type of Content Fragments that enables authors to create rich text content. Also, review How to execute a Persisted query, Using query variables, and Encoding the query URL for use by an app to learn persisted query execution by client applications. After receiving and verifying the request, our custom authenticator would then forward the token to a web service endpoint where it will be confirmed, and then user details will be returned upon success. At the same time, introspection also has a few downsides. Sign In. npm install bcrypt. For a third-party service to connect with an AEM instance it must. The GraphiQL tool enables developers to create and test queries against content on the current AEM environment. This opens a side panel with several tabs that provide a developer with information about the current page. Learn how to create, update, and execute GraphQL queries. Users with an IMS org administrator role, and who are a member of the AEM Users or AEM Administrators Product Profile on AEM Author, can generate a set of credentials from AEM as a Cloud Service. Command line parameters define: The AEM as a Cloud Service Author service host. Developer. adobe. This feature can be used to reduce the number of GraphQL backend calls by a large factor. Content Fragments used in AEM Headless content modeling, often reference image assets intended for display in the headless experience. 5 and Headless. One collection for each declared GraphQL type (using the type name), with the exception of @embedded types. An end-to-end tutorial illustrating advanced concepts of Adobe Experience Manager (AEM) GraphQL APIs. The GraphiQL Explorer tool enables developers to create, and test queries against content on the current AEM environment. With GraphQL, you model your business domain as a graph by defining a schema; within your schema, you define different types of nodes and how they connect/relate to one another. This chapter presents several approaches to authentication that can be adapted to a variety of different. Project Configurations; GraphQL endpoints; Content Fragment. Resolution. AEM has a large list of available content types and you’re able to select zero or more. Using basic authentication and postman I am able to run all the requests GET,POST,PUT,DELETE on AEM6. 6. AEM’s GraphQL queries can be written to provide URLs to images based on where the image is referenced from. If you expect a list of results: Manage GraphQL endpoints in AEM. Previous page. AEM Headless single-page app (SPA) deployments involve JavaScript-based applications built using frameworks such as React or Vue, that consume and interact with content in AEM in a headless manner. Other than that, Queries and Mutations are the same, they’re both just strings that map. AEM Local Development Access Tokens are used to accelerate the development of integrations with AEM as a Cloud Service that programmatically interacts with AEM Author or Publish services over HTTP. After the Apollo Router validates a client request's JWT, it adds that token's claims to the request's context at this key: apollo_authentication::JWT::claims. AEM GraphQL API requests. This tutorial explores how AEM’s GraphQL APIs and headless capabilities can be used to power the experiences surfaced in an external app. 5 . Querying AEM using GraphQL using persisted queries (as opposed to client-defined GraphQL queries) allows developers to persist a query (but not its results) in AEM, and then request the query to be executed by name. express or nginx) take care of authentication. Authentication is an essential part of most applications. For authentication, the third-party service needs. Authenticate your web site's user to an IDP using AEM Publish service's SAML 2. Further Reference. For requests with body type GraphQL, Postman will now automatically import the GraphQL schema if available. After some search on the web I found that the best way of JWT authentication when using GraphQL is by inserting the JWT token into the GraphQL context. An end-to-end tutorial illustrating how to build-out and expose content using AEM Headless. Review the AEMHeadless object. Select Add private key from DER file, and add the private key and chain file to AEM:Yes, since few days I am going through this article, in this article Albin has explained through basic authentication only, token based may be supporting in AEMAaCS not sure if it is there in AEM6. Ensure the backend optimization and Database support to fire single query for each graphql command might get tricky. Authentication can provide context to a session and personalize the type of data that a user sees. Please ensure that the previous chapters have been completed before proceeding with this chapter. The WKND client application connects to AEM publish service, so it is important that you published the following to the AEM publish service. In this example, we’re restricting the content type to only images. Adobe Experience Manager as a Cloud Service’s Cross-Origin Resource Sharing (CORS) facilitates non-AEM web properties to make browser-based client-side calls to AEM’s GraphQL APIs, and other AEM Headless resources. The sample React app has three main parts: The src/api folder contains files used to make GraphQL queries to AEM. The following tools should be installed locally: JDK 11;. 7 - GraphQL Persisted Queries; Basic Tutorial. a) User logs in with username and password. The SPA retrieves this content via AEM’s GraphQL API. The following tools should be installed locally: JDK 11;. The advanced tutorial illustrates in-depth aspects of working with Content Fragment Models, Content Fragments, and the AEM GraphQL persisted queries, including using the GraphQL persisted queries in a client application. The GraphQL schema can contain sensitive information. TIP. js using GraphQL Yoga and Pothos. Users with an IMS org administrator role, and who are a member of the AEM Users or AEM Administrators Product Profile on AEM Author, can generate a set of credentials from AEM as a Cloud Service. Project Configurations; GraphQL endpoints; Content Fragment. To determine the correct approach for managing build dependent configurations, reference the AEM Headless app’s framework (for example, React, iOS, Android™, and so on) documentation, as the approach varies by framework. To add more authorization types using the AWS AppSync console, launch the console, choose your GraphQL API, then choose Settings and scroll to the Authorization settings. This article explores GraphQL basics and key characteristics, values of GraphQL over REST, the importance of an API Gateway for GraphQL services, and the benefits of exposing a GraphQL service as a managed API via WSO2 Gateway. Please ensure that the previous chapters have been completed before proceeding with this chapter. If not, it will create it on the fly and. Rich text with AEM Headless. Authorization. Authorization. Content Fragments GraphQL API; Managing GraphQL Endpoints; Using the GraphiQL IDE; Persisted Queries; Optimizing GraphQL Queries; Updating your Content Fragments for optimized GraphQL Filtering; Authentication for Remote AEM GraphQL Queries on Content Fragments; AEM GraphQL API with Content Fragments - Sample. The following example uses the az apim api import command to import a GraphQL passthrough API from the specified URL to an API Management instance named apim-hello-world. Okta is a cloud service that allows developers to create. 10. In GraphQL, we’d use this to manage access to particular queries and mutations based on identity, role, or permissions. For server-to-server authentication, you can use Service Credentials of AEM (Access tokens). setDefaultHeader ( "X-app-name", "baeldung-unirest" ); Unirest. Next, explore the power of AEM’s GraphQL API using the built-in GraphiQL Explorer. Developer. Schema Schema // A GraphQL language formatted string representing the requested operation. Developer. 5 Using basic authentication and postman I am able to run all the requests GET,POST,PUT,DELETE on AEM. Getting granular access control is a big pain in large REST APIs. To determine the correct approach for managing build dependent configurations, reference the AEM Headless app’s framework (for example, React, iOS, Android™, and so on) documentation, as the approach varies by framework. Explore the dynamic world of content delivery through the lenses of 'Content Fragments' and 'GraphQL. Overview; 1 - Create Content Fragment. Handle authentication in GraphQL itself. The HTTP GET requests from the headless app to AEM’s GraphQL APIs must be configured to interact with the correct AEM service, as. Using this path you (or your app) can: receive the responses (to your GraphQL queries). Sign In. Learn how to create GraphQL queries to return content from Adobe Experience Manager (AEM) and how to use the GraphiQL tool to quickly test, refine, and debug queries. Authorization is then determining what a given user has permission to do or see. The WKND client application connects to AEM publish service, so it is important that you published the following to the AEM publish service. Step 1: Validate the username, password, and that the user exists: If the issue only happens with one or a few users, then it could be that the wrong usernames or passwords are being used or the users don’t exist in AEM. Developer. ) that is curated by the. This session dedicated to the query builder is useful for an overview and use of the tool. Once a user is authenticated, we need to ensure they have the necessary permissions to access the requested resources. See Generating Access Tokens for Server-Side APIs for full details. Content Fragments in AEM provide structured content management. An end-to-end tutorial illustrating how to build-out and expose content using AEM’s GraphQL APIs and consumed by an external app, in a headless CMS scenario. Learn how to enable, execute queries against, and publish and secure GraphQL endpoints. Developer. It's focussed on Assets, but it is basically the same for sites. Project Configurations; GraphQL endpoints; Content Fragment. Also, one should consider the Pros after its implementation : Very flexible to support new items and update existing behaviour. An effective caching can be achieved especially for repeating queries like retrieving the. For GraphQL queries with AEM there are a few extensions: . For a third-party service to connect with an AEM instance it must. 1. When prompted for a username and password, make sure you use an account that has access to the repository. When a @relation. json. The AEM Headless quick setup gets you hands-on with AEM Headless using content from the WKND Site sample project, and a sample React App (a SPA) that consumes the content over AEM Headless GraphQL APIs. The WKND client application connects to AEM publish service, so it is important that you published the following to the AEM publish service. This is done by adding an appropriate OSGi CORS configuration file for the desired endpoint(s). This document is part of a multi-part tutorial. Available for use by all sites. Dedicated Service accounts when used with CUG.