<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div>On Dec 3, 2012, at 2:55 AM, Olle E. Johansson wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div><br>1 dec 2012 kl. 14:24 skrev Joshua Colp &lt;<a href="mailto:jcolp@digium.com">jcolp@digium.com</a>&gt;:<br><br><blockquote type="cite">Olle E. Johansson wrote:<br></blockquote><blockquote type="cite"><blockquote type="cite">"Authorization: No immediate need for multiple levels or granular permissions inside the api."<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">I disagree. Some of my patches have been focused on being able to host multiple companies in one PBX.<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">We do need authorization so we can implement "realms" within Asterisk - which channels are one<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">particular user (or group) allowed to follow, manipulate and originate?<br></blockquote></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">I think a complete authorization system with permissions would be great but starting out should not be a blocker. The design of the overall API should also not forbid such a thing.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Why do I say this?<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">From my personal experience and seeing what others have done the view of a permissions system vastly differs and can really end up being application specific. Expressing this in a generic fashion is really hard. Take AMI classes - is everyone *really* happy with them? I'm not. If you are clever there are ways around them. That's not to say they don't get some jobs done.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Gathering what people want from such a permissions system and tackling that in parallel would be awesome. This may actually end up really illustrating the different views of permissions and how one size can not fit all unless the deployer just submits and accepts it, but that's a wild guess. So don't just say you want one, say what you need from it. This is a chance to get it right - so don't just leave it up to guessing.<br></blockquote><br>I stated clearly the goal - to be able to host multiple companies in one PBX. What part of that was unclear, Josh?<br><br>Of course there are many other goals around, but this has been my focus for quite a while, with multiparking, context for originate and redirect any many other patches.<br></div></blockquote><div><br></div><div>First, thanks for the feedback! To echo what Josh (and now Matt) said, the primary intention is to avoid the trap that is AMI permission classes: ending up with what looks like a reasonable set of permissions, but when you push on them you find tricky and hard to fix privilege escalation issues. If we can gather good use cases around authorization up front, we can design a scheme that addresses the use cases while avoiding the pitfalls. Well, that's the goal.</div><div><br></div><div>You do make a very good point to consider: per-object authz. &nbsp;And at the time, I was thinking entirely of system-wide authz. Per-object schemes have their own sets of issues, but not the sort of privilege escalation issues you get with fine-grained permissions.</div><div><br></div><div>But about your specific use case "be able to host multiple companies in one PBX". The users of the API aren't going to be the customers or end users: they're going to be the applications. I'm assuming that it would be atypical to give access to the API directly to the end user. That would be like giving them command line or AMI access.</div><div><br></div><div>Instead, users will interact with the applications. At that point it's up to the applications to determine a) who the user is, and b) what that user has the right to do. And defining the permissions for the application usually makes more sense in terms of application level concepts instead of the lower level concepts. At that point, it's better for everyone if the application to do its own authorization, rather than try to shoe-horn itself into whatever's provided by the underlying system.</div><div><br></div><div>There may be other reasons to add per-object authorization to the API work. But hosting multiple companies in one PBX doesn't feel like one of them.</div><div><br></div><blockquote type="cite"><div>/O</div></blockquote></div><br><div>
<span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>--&nbsp;<br>David M. Lee<br>Digium, Inc. | Software Developer<br>445 Jan Davis Drive NW - Huntsville, AL 35806 - USA<br>Check us out at: &nbsp;<a href="http://www.digium.com/">www.digium.com</a>&nbsp;&nbsp;&amp;&nbsp;<a href="http://www.asterisk.org/">www.asterisk.org</a></div></div></span></div></span></span>
</div>
<br></body></html>