Topcon’s CIAM architecture follows the XACML (eXtensible Access Control Markup Language) model, which is commonly used by large SaaS platforms like Amazon AWS. This architecture allows for flexible domain modeling and collects necessary data for security decisions from various sources, including our master data, data lake, ERP, CRM, and application systems.
In this section, we will briefly outline the XACML architecture and how it is implemented at Topcon, helping readers understand the CIAM service and trust its security, flexibility, and scalability. The XACML model ensures that CIAM can grow with the company’s evolving product and business needs.
XACML defines five main roles (PAP, PIP, PRP, PEP, and PDP). While XACML can be prescriptive about these roles, many systems—including Topcon’s—use them in a descriptive manner without strict adherence to XACML’s XML policy format. Topcon leverages XACML as a Policy-Based Access Control (PBAC) architecture, which offers more flexibility and is easier to govern compared to Role-Based Access Control (RBAC).
Below is an overview of the XACML roles and their implementation in Topcon’s CIAM service. For those already familiar with XACML, you can skip ahead to the next section to see how these elements come together for Topcon’s SaaS services.
The PAP is the single point in the system where policies are administered.
Note: It might be helpful to think of the PAP as similar to Amazon's AWS IAM service.
Topcon implements the PAP as a REST API. OpenAPI documentation for the PAP can be found here.
Topcon has created its own REST API for the PAP because:
The PAP API includes endpoints for administering Business Partners
(a direct or indirect customer), Identities
(a person), Users
and their profiles (roles), and Groups
, among others. These terms will be explained later. However, most Topcon web services won’t need to interact directly with this part of the PAP API, as customer management of these entities happens centrally through the My Topcon self-service dashboard.
The PAP API also includes endpoints for administering Permissions
to access Resources
(e.g., a construction site or a design file for a construction site). Topcon web services that use CIAM may need to interact with this part of the PAP API.
Topcon’s CIAM uses a Policy-Based Access Control (PBAC) system. Service-specific policies are administered through the PAP REST API. We use Open Policy Agent (OPA) and REGO for policy code, which will be discussed [later in this document](#writing-opa-rego-policies-for-your-topcon-web-service).
In summary: The Policy Administration Point (PAP) allows Topcon policy data and policy code to be administered through a single REST API, much like how AWS IAM works for Amazon.
The PDP is a highly available, low-latency service that makes authorization decisions for Topcon web services.
Authorization decisions generally follow this form:
token subject
perform action X
on resource Y
in environment Z
?While this is the typical structure, PBAC allows flexibility in how authorization decisions are made by the use of extensible policies. This enables product managers and developers to adapt the system to fit new products. Policies offer flexibility such as enabling support for X509 Client Authenticated TLS, OAuth 2.0 access tokens, and various other protocols.
Topcon CIAM uses Open Policy Agent (OPA) as the PDP, discussed further below. OPA's policy language REGO is well-established and well-documented.
Topcon web service developers can use IT-provisioned PDP services or provision their own PDP if they need full control over factors such as throughput and latency. Collaborate with us to determine the best approach for your specific needs.
In summary: The PDP is a policy-based decision engine that handles access management for you. Instead of writing access management code from scratch, you can rely on prebuilt policies or customize them using REGO for your specific product. The advantage of using the same policy language across the company is that common policies, such as "My dealer can support my customer in my product," are already available.
The PEP can be thought of as a security guard at the front door, checking who is allowed to enter.
The PEP’s role is to enforce a service request, determining whether the request is accepted or denied based on inputs like:
Continuing with the analogy, the security guard (PEP) needs to check with a system to determine if you’re allowed entry. That system is the PDP mentioned above. The PEP enforces the request by consulting the PDP. This decoupling between the PEP and PDP gives us flexibility in how we secure our web services. Below is a list of sone IT-supported PEP technologies:
As shown, the PEP is often implemented as an integration with an HTTP proxy or gateway. The proxy or gateway gathers information about the incoming request (e.g., URL, tokens) and passes it to the PDP for authorization. If the PDP denies the request, the proxy or gateway responds with a 401 status. However, this isn’t limited to HTTP. Any protocol that provides the necessary information can serve as a PEP that accesses our PDP agents.
As with the PDP, developers can use IT-provisioned PEP services or provision a PEP themselves if they need control over throughput and latency. Work with us to determine the best approach for your needs.
In summary: The PEP is where we enforce security, most often through an API Gateway. You can ask IT to help set up one, or you can configure your own.
The PRP is where the PDP accesses the policy store. For scalability, the policy store is globally replicated. Topcon uses a globally replicated AWS DynamoDB as the backend for the PRP, ensuring scalability and redundancy—both critical for a core service like CIAM.
A PIP decouples the data used in policy decisions, allowing it to come from external data sources outside of CIAM. For example, information about a device and its entitlements (such as what software it can run) might be integrated with CIAM as a Policy Information Point, accessing other systems in the background.
Topcon’s CIAM expects a PIP to be implemented as a REST API, allowing policy evaluation to query the PIP via REST requests.
The use of PIPs provides tremendous flexibility. It allows a Topcon web service to access any data store necessary to:
The following diagram shows how the XACML roles come together in Topcon’s CIAM implementation.
What’s important to note here?
In summary: Topcon web services only need to integrate with CIAM in a few places: obtaining a JWT token from Ping Federate and configuring policies for a PEP. Please work with us to integrate your product by arranging for OAuth 2.0 client-credentials and a PEP API Gateway to secure your application.