<div dir="ltr"><p class=""></p><p class="" style>This is a feature that just landed in Grizzly which could certainly use some extra security-focused eyes.</p><p class="" style>There's two use cases being addressed:</p>
<p class="">1) Scoped role delegation with optional impersonation: "I trust user X to perform role Y on project Z, optionally for some duration of time, and optionally while impersonating me."<br></p><div>2) Impersonation: "I trust user X to impersonate me, optionally for some duration of time."</div>
<div><br class="">In short, a trust is created by a trustor; the trustee must first authenticate as themselves, and then may consume the trust by specifying it's ID (which is not necessarily a secret); the trustee then receives a token with the project and associated roles as specified by the trustor; the generated token may also reflect the trustor's identity, instead of the trustees (but will contain an impersonation flag to indicate this behavior).<br>
</div><div><br></div><div style>The original blueprint [1] outlines the goal of the feature and contains links to relevant patches. The Identity API v3 specification contains a fairly thorough overview of the final concept [2] along with a examples for each of the related API calls [3]. The implementation is mostly housed in the keystone.trust package [4] although it also affects both v3 and v2 auth flows, in the keystone.auth [5] and keystone.token [6] packages, respectively.</div>
<div style><br></div><div style>[1]: <a href="https://blueprints.launchpad.net/keystone/+spec/trusts">https://blueprints.launchpad.net/keystone/+spec/trusts</a></div><div style><br></div><div style>[2]: <a href="https://github.com/openstack/identity-api/blob/master/openstack-identity-api/src/markdown/identity-api-v3.md#trusts">https://github.com/openstack/identity-api/blob/master/openstack-identity-api/src/markdown/identity-api-v3.md#trusts</a></div>
<div style><br></div><div style>[3]: <a href="https://github.com/openstack/identity-api/blob/master/openstack-identity-api/src/markdown/identity-api-v3.md#trusts-1">https://github.com/openstack/identity-api/blob/master/openstack-identity-api/src/markdown/identity-api-v3.md#trusts-1</a><br>
</div><div style><br></div><div style>[4]: <a href="https://github.com/openstack/keystone/tree/master/keystone/trust">https://github.com/openstack/keystone/tree/master/keystone/trust</a></div><div style><br></div><div style>
[5]: <a href="https://github.com/openstack/keystone/tree/master/keystone/auth">https://github.com/openstack/keystone/tree/master/keystone/auth</a></div><div style><br></div><div style>[6]: <a href="https://github.com/openstack/keystone/tree/master/keystone/token">https://github.com/openstack/keystone/tree/master/keystone/token</a></div>
<div style><br></div><div style>Thanks for all your hard work, Adam!</div><div style><br></div><div>-Dolph</div>
</div>