func()

in pkg/cloud/graph.go [116:141]


func (c *AzureClient) GetFederatedCredential(ctx context.Context, objectID, issuer, subject string) (models.FederatedIdentityCredentialable, error) {
	mlog.Debug("Getting federated credential",
		"objectID", objectID,
		"issuer", issuer,
		"subject", subject,
	)

	ficGetOptions := &applications.ItemFederatedidentitycredentialsFederatedIdentityCredentialsRequestBuilderGetRequestConfiguration{
		QueryParameters: &applications.ItemFederatedidentitycredentialsFederatedIdentityCredentialsRequestBuilderGetQueryParameters{
			// Filtering on more than one resource is currently not supported.
			Filter: to.Ptr(getSubjectFilter(subject)),
		},
	}

	resp, err := c.graphServiceClient.Applications().ByApplicationId(objectID).FederatedIdentityCredentials().Get(ctx, ficGetOptions)
	if err != nil {
		return nil, maybeExtractGraphError(err)
	}

	for _, fic := range resp.GetValue() {
		if *fic.GetIssuer() == issuer {
			return fic, nil
		}
	}
	return nil, ErrFederatedCredentialNotFound
}