[ 
https://issues.apache.org/jira/browse/JCLOUDS-1414?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16458500#comment-16458500
 ] 

Alix Lourme commented on JCLOUDS-1414:
--------------------------------------

After debugging the _domain_ creation for _project_ & _user_, this use case is 
supported: By using the *jclouds.keystone.tenant-id* property:
* The domain of project scope is retrieved firstly from _tenant-id_ (cf. 
[BindAuthToJsonPayload.parseScope()|https://github.com/jclouds/jclouds/blob/f7b45341328410dea583901a31218a3588cb5aad/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v3/binders/BindAuthToJsonPayload.java#L96])
* The domain of user is retrieved only from _tenantOrDomainName_ (cf. 
[BindAuthToJsonPayload.buildAuth()|https://github.com/jclouds/jclouds/blob/f7b45341328410dea583901a31218a3588cb5aad/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v3/binders/BindPasswordAuthToJsonPayload.java#L44]])

So this snippet does the job:
{code}
overrides.put(KeystoneProperties.TENANT_ID, "default");
overrides.put(KeystoneProperties.SCOPE, "project:myTenant");

ContextBuilder.newBuilder(...).credentials("ldap:foo", "bar")....buildApi(...);
{code}

But this is perhaps more a hack on scope creation than a real usage of these 
properties.

> OpenStack Keystone V3: Support different "domain" for "identity/user" and 
> "project"
> -----------------------------------------------------------------------------------
>
>                 Key: JCLOUDS-1414
>                 URL: https://issues.apache.org/jira/browse/JCLOUDS-1414
>             Project: jclouds
>          Issue Type: Improvement
>          Components: jclouds-core
>    Affects Versions: 2.1.0
>            Reporter: Alix Lourme
>            Priority: Critical
>              Labels: keystone, openstack
>
> The [OpenStack KeyStone 
> V3|https://jclouds.apache.org/blog/2018/01/16/keystone-v3/] is great, but 
> fails when OpenStack platform in endpoint requires a _identify/user_ *domain* 
> different than _project_ *domain.*
> Consider this required content for https://[host]/v3/auth/tokens endpoint:
> {code}
> {
>     "auth": {
>         "identity": {
>             "methods": ["password"],
>             "password": {
>                 "user": {
>                     "name": "foo",
>                     "domain": {
>                         "name": "ldap"
>                     },
>                     "password": "bar"
>                 }
>             }
>         },
>         "scope": {
>             "project": {
>                 "name": "myTenantName",
>                 "domain": {
>                     "name": "default"
>                 }
>             }
>         }
>     }
> }
> {code}
> The 
> [BaseAuthenticator|https://github.com/jclouds/jclouds/blob/f7b45341328410dea583901a31218a3588cb5aad/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/auth/functions/BaseAuthenticator.java#L84]
>  is using always the same domain for the request :(.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to