<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><br><div><div>On Jun 8, 2012, at 8:38 PM, Dolph Mathews wrote:</div><blockquote type="cite"><div bgcolor="#FFFFFF"><div><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.296875); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); ">On Jun 8, 2012, at 6:47 PM, "Nguyen, Liem Manh" <<a href="mailto:liem_m_nguyen@hp.com">liem_m_nguyen@hp.com</a>> wrote:</span><br></div><div><br></div><div></div><blockquote type="cite"><div>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 12 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
{mso-style-priority:34;
margin-top:0in;
margin-right:0in;
margin-bottom:0in;
margin-left:.5in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri","sans-serif";}
span.EmailStyle17
{mso-style-type:personal-compose;
font-family:"Calibri","sans-serif";
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
/* List Definitions */
@list l0
{mso-list-id:1171916525;
mso-list-type:hybrid;
mso-list-template-ids:-811695358 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;}
ol
{margin-bottom:0in;}
ul
{margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
<div class="WordSection1"><p class="MsoNormal">Hi Joe/Dolph,<o:p></o:p></p><p class="MsoNormal"><o:p> </o:p></p><p class="MsoNormal">I have a few questions on the v3 API’s create_user (sorry the comments section in the Google docs is getting pretty cluttered now):<o:p></o:p></p><p class="MsoNormal"><o:p> </o:p></p><p class="MsoNormal"><span style="color:#5F497A">(POST) /users ==> create_user<o:p></o:p></span></p><p class="MsoNormal"><span style="color:#5F497A">{<o:p></o:p></span></p><p class="MsoNormal"><span style="color:#5F497A">" tenant_id": ...<o:p></o:p></span></p><p class="MsoNormal"><span style="color:#5F497A">"name": ...<o:p></o:p></span></p><p class="MsoNormal"><span style="color:#5F497A">"password": ...<o:p></o:p></span></p><p class="MsoNormal"><span style="color:#5F497A">"enabled": ...<o:p></o:p></span></p><p class="MsoNormal"><span style="color:#5F497A">"email": ...<o:p></o:p></span></p><p class="MsoNormal"><span style="color:#5F497A">"description": ...<o:p></o:p></span></p><p class="MsoNormal"><span style="color:#5F497A">}<o:p></o:p></span></p><p class="MsoNormal"><o:p> </o:p></p><p class="MsoListParagraph" style="text-indent:-.25in;mso-list:l0 level1 lfo1"><!--[if !supportLists]--><span style="mso-list:Ignore">1.<span style="font:7.0pt "Times New Roman"">
</span></span><!--[endif]-->Does this tenant_id option establish the default tenancy of the created user?
</p></div></div></blockquote><div><br></div><div>Yes.</div><br><blockquote type="cite"><div><div class="WordSection1"><p class="MsoListParagraph" style="text-indent:-.25in;mso-list:l0 level1 lfo1"><o:p></o:p></p><p class="MsoListParagraph" style="text-indent:-.25in;mso-list:l0 level1 lfo1"><!--[if !supportLists]--><span style="mso-list:Ignore">2.<span style="font:7.0pt "Times New Roman"">
</span></span><!--[endif]-->If it does, is this default tenancy immutable or mutable? If it is mutable, who (what role) can change it and via what API?</p></div></div></blockquote><div><br></div><div>Should be mutable by admins, via the admin API, as it's just a regular attribute of the user and the keystone "admin" concept currently applies to the entire deployment.</div><br><blockquote type="cite"><div><div class="WordSection1"><p class="MsoListParagraph" style="text-indent:-.25in;mso-list:l0 level1 lfo1"><o:p></o:p></p><p class="MsoListParagraph" style="text-indent:-.25in;mso-list:l0 level1 lfo1"><!--[if !supportLists]--><span style="mso-list:Ignore">3.<span style="font:7.0pt "Times New Roman"">
</span></span><!--[endif]-->What is the intended purpose of a user’s default tenancy? Is the default tenancy association intended to link a user to a given domain (rather than the normal user-tenant role association)?</p></div></div></blockquote></div></blockquote><div><br></div>To be a little more explicit about the "default tenant" thing - it's used so that the user can give a "username/password" pair to the POST to /token and get a token scoped to a tenant without the user asserting which tenant it wishes to use.<div><br></div><br><blockquote type="cite"><div bgcolor="#FFFFFF"><div>"Auto-scoping" the user's context, when a tenant is not explicitly specified during auth.</div><div><br></div><div>I can't fairly answer the second question because the idea of domains wasn't around at the time. However, if you replace the term "domain" with "tenant", I'd say yes.</div></div></blockquote><blockquote type="cite"><div bgcolor="#FFFFFF"><br><blockquote type="cite"><div><div class="WordSection1"><p class="MsoListParagraph" style="text-indent:-.25in;mso-list:l0 level1 lfo1"><o:p></o:p></p><p class="MsoNormal"><o:p> </o:p></p><p class="MsoNormal">The reason I am asking this is that I would like to know what level of isolation (if any) we can establish for users that are homed to different domains… So, for example, an isolation would be that a user A with a default tenancy in domain
X may not be modified or deleted by a domain-admin in domain Y, even when user A has tenant membership in domain Y.</p></div></div></blockquote><div><br></div><div>I think that's an issue best solved per-deployment by robust RBAC, rather than being hardcoded either way.</div></div></blockquote><div><br></div><div>I agree with Dolph - since domains don't segment users, only tenants - then the choice is really driven by RBAC, which can be encapsulated in rules. None of the API defined in the v1 draft currently even hints at what RBAC might be wrapped around each of the calls, but all of those calls can and should be wrapped as actions and defined in the policy.json file. </div><div><br></div><div>We do need to come up with a suggested default implementation - given that users are not segmented into domains, what would you suggest?</div></div><br></div><div><br></div></body></html>