<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; color: rgb(0, 0, 0); font-size: 14px; font-family: Calibri, sans-serif; ">
<div>I'm reading through the dev guide for the first time. I hope my comments are timely.</div>
<div><br>
</div>
<div>I'm glad to see section 2 begin by defining concepts. I'd suggest adding all these concepts to the openstack glossary at <a href="http://wiki.openstack.org/Glossary">http://wiki.openstack.org/Glossary</a>. The github site for keystone defines these concepts
 in the README, but also includes group, so I'd add that to section 2. I see groups and tenant groups are defined in the appendix as an extension. Why an extension? If an operator doesn't want to use them, can't they just ignore them?</div>
<div><br>
</div>
<div>The tenant concept is interesting. This may have been discussed elsewhere on this list, but I missed that conversation. I gather it's a somewhat flexible notion.  I've been immersed in ITIL lately, and it's language can help express this concept. Tell
 me if this is consistent with your idea of tenant: A tenant is a configuration within the service that holds configuration items for a specific "customer" of the service, where customer is a party with an independent right to assign users, groups, and roles
 to consume the capabilities of the service.</div>
<div><br>
</div>
<div>In example 3.1 the POST content type says it's a JSON request, but the POST'ed payload shows as XML. I'm a little concerned that the password appears to be sent in clear text. </div>
<div><br>
</div>
<div>In 3.3 we discuss paginated collections, and navigation via "next" and "previous" links, but you need to differentiate the limit and marker URI scheme for these cases. "next" links go to the page whose records are AFTER the marker, and "previous" links
 go to the page whose records are BEFORE the mark, so you can't use the same URI constructs for both. I  recommend ?after=lastID and ?before=firstID. There's also no reason to actually specify the URI structure in the spec . "next" and "previous" are enough.</div>
<div><br>
</div>
<div>In section 4.3 I wonder if there should be a notion of the authentication mechanism included, along the lines of RFC 2617's basic and digest authentication schemes. The RFC has a good treatment of various security issues in it's section 4. See <a href="http://tools.ietf.org/html/rfc2617">http://tools.ietf.org/html/rfc2617</a> .
 I expect we'd be measured against this bar.</div>
<div><br>
</div>
<div>A general comment for section 5 is that for write operations the payload format should be discussed. Eg: when we PUT against /user/userId/enabled, exactly what does the payload look like.</div>
<div>In section 5.2.2, the first row shows using PUT against /users to create a user, but I expect you want POST here.</div>
<div><br>
</div>
<div>In 5.2.4 you PUT against /tenants to create a user, but I expect you want POST here, too. In 5.4 you discuss this as a POST. </div>
<div><br>
</div>
<div>In 5.2.6, we should describe what a roleRef is exactly.</div>
<div><br>
</div>
<div>I'm not sure why we cover tenants in both 5.2.4 and 5.4.  Similarly, we cover tokens in both 5.2.3 and 5.3.</div>
<div><br>
</div>
<div>In 5.5, we cover Base URLs. This should be covered in the concepts too, then.</div>
<div><br>
</div>
<div>In 6.1.2, we PUT to /groups to create a group, but I think we want POST here.</div>
<div><br>
</div>
<div>One thing that I would suggest adding that seems to come up a lot is a mechanism for tracking changes that will affect authorization logic or drive provisioning/deprovisioning activity. I suggest adding atom feeds of change events such as: user adds and
 deletes, revoked tokens, adds and deletes of users to roles, groups, and tenant groups. These atom feeds will allow authorization logic to be based on cached information that can be kept current within a desired latency by efficient polling of the atom feeds.</div>
<div><br>
</div>
<div><br>
</div>
<span id="OLK_SRC_BODY_SECTION">
<div style="font-family:Calibri; font-size:11pt; text-align:left; color:black; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0in; PADDING-LEFT: 0in; PADDING-RIGHT: 0in; BORDER-TOP: #b5c4df 1pt solid; BORDER-RIGHT: medium none; PADDING-TOP: 3pt">
<span style="font-weight:bold">From: </span>Ziad Sawalha <<a href="mailto:ziad.sawalha@rackspace.com">ziad.sawalha@rackspace.com</a>><br>
<span style="font-weight:bold">Date: </span>Fri, 10 Jun 2011 23:24:24 +0000<br>
<span style="font-weight:bold">To: </span>"<a href="mailto:openstack@lists.launchpad.net">openstack@lists.launchpad.net</a>" <<a href="mailto:openstack@lists.launchpad.net">openstack@lists.launchpad.net</a>><br>
<span style="font-weight:bold">Subject: </span>[Openstack] OpenStack Identity: Keystone API Proposal<br>
</div>
<div><br>
</div>
<div>
<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; color: rgb(0, 0, 0); font-size: 14px; font-family: Calibri, sans-serif; ">
<div>Time flies! It's June 10th already. In my last email to this community I had proposed today as the day to lock down the Keystone API so we can finalize implementation by Diablo-D2 (June 30th).</div>
<div><br>
</div>
<div>We've been working on this feverishly over the past couple of weeks and have just pushed out a proposed API here:
<a href="https://github.com/rackspace/keystone/raw/master/keystone/content/identitydevguide.pdf">
https://github.com/rackspace/keystone/raw/master/keystone/content/identitydevguide.pdf</a></div>
<div><br>
</div>
<div>For any and all interested, the original source and code is on Github (<a href="https://github.com/rackspace/keystone/raw/master/keystone/content/identitydevguide.pdf">https://github.com/rackspace/keystone</a>), along with the current implementation of
 Keystone, examples, sample data, tests, instructions, and all the goodies we could muster to put together. The project also lives on Launchpad at
<a href="http://launchpad.net/keystone">http://launchpad.net/keystone</a>.</div>
<div><br>
</div>
<div>The API we just put out there is still a proposal. We're going to be focusing on the implementation, but would still love to get community input, feedback, and participation.</div>
<div><br>
</div>
<div>Have a great weekend and regards to all,</div>
<div><br>
</div>
<div>Ziad</div>
<div><br>
</div>
<div><br>
</div>
</div>
</div>
</span>
</body>
</html>