This PR exposes the current service principal in the Azure API and provides 
several improvements to allow APIs interact with the current user information 
and the different OAuth resources.

* It uses the *Graph RBAC* API to retrieve the current Service Principal.
* If binds it to the Guice context to make it injectable as a 
`Supplier<ServicePrincipal>`. This way it is available where needed (for 
example in the `KeyVault` classes, to get its `obejctId`).
* It also makes the `tenantId` injectable as: `@Tenant String tenantId`.
* Provides a generic way to specify custom OAuth resources for APIs classes and 
concrete API methods. To use a custom OAuth resource in an API call just 
annotate the API or method with `@OAuthResource("custom resource")` and 
authentication will automatically use the custom one.

@jmspring I think this will be very useful for the KeyVault pull request. Could 
you give this approach a try? In concrete:

* You'll be able to remove the need to ask for the `objectId` in the 
properties, as now it is automatically resolved and you can inject the service 
principal supplier wherever you need the `objectId`.
* It also allows you to configure the entire KeyVault API with the custom OAuth 
endpoint annotation for a clean OAuth configuration.

You can view, comment on, or merge this pull request online at:

  https://github.com/jclouds/jclouds-labs/pull/424

-- Commit Summary --

  * Injectable current service principal

-- File Changes --

    M 
azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/AzureComputeApi.java
 (40)
    M 
azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/AzureComputeProviderMetadata.java
 (20)
    M 
azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/config/AzureComputeHttpApiModule.java
 (83)
    A 
azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/config/AzureOAuthConfigFactory.java
 (60)
    A 
azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/config/GraphRBAC.java
 (35)
    A 
azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/config/OAuthResource.java
 (35)
    A 
azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/config/Tenant.java 
(34)
    A 
azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/ServicePrincipal.java
 (71)
    A 
azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/CurrentServicePrincipalApiLiveTest.java
 (34)

-- Patch Links --

https://github.com/jclouds/jclouds-labs/pull/424.patch
https://github.com/jclouds/jclouds-labs/pull/424.diff

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/jclouds/jclouds-labs/pull/424

Reply via email to