in http/server/otelaudit/otelaudit_helper.go [118:167]
func getCallerIdentities(req *http.Request) map[msgs.CallerIdentityType][]msgs.CallerIdentityEntry {
caller := make(map[msgs.CallerIdentityType][]msgs.CallerIdentityEntry)
// Extract variables from the URL using gorilla/mux.
// Assuming the router pattern follows the standard Azure format:
// routePattern := "/{subscriptionId}/resourceGroups/{resourceGroup}/providers/{resourceProvider}/{resourceType}/{resourceName}"
vars := mux.Vars(req)
subscriptionID := vars[common.SubscriptionIDKey]
if subscriptionID != "" {
caller[msgs.SubscriptionID] = []msgs.CallerIdentityEntry{
{
Identity: subscriptionID,
Description: "client subscription ID",
},
}
}
clientAppID := req.Header.Get("x-ms-client-app-id")
if clientAppID != "" {
caller[msgs.ApplicationID] = []msgs.CallerIdentityEntry{
{
Identity: clientAppID,
Description: "client application ID",
},
}
}
clientPrincipalName := req.Header.Get("x-ms-client-principal-name")
if clientPrincipalName != "" {
caller[msgs.UPN] = []msgs.CallerIdentityEntry{
{
Identity: clientPrincipalName,
Description: "client principal name",
},
}
}
clientTenantID := req.Header.Get("x-ms-client-tenant-id")
if clientTenantID != "" {
caller[msgs.TenantID] = []msgs.CallerIdentityEntry{
{
Identity: clientTenantID,
Description: "client tenant ID",
},
}
}
return caller
}