That is, to take another tack at this that might make it more clear:
The fact that Software Instance A is authorized to do something on
Server B is _not_ baked in at compile time to Software A. That is not
OAuth's security model, in part because it is not a feasible security
model, nobody has yet figured out a way to do that.
Instead, the fact that Software Instance A is authorized to do something
on Server B is, neccesarily, in OAuth's model, determined at run time
with the interaction of a user. Once the user does this interaction,
Software Instance A can keep a security token around that will let it
keep doing that Something on Server B for a Very Long Time, until the
token expires. But that initial authorization requires user interaction
at run-time. That is OAuth's security model.
OAuth's security model does not require each piece of client software to
have a baked-in key of any kind. OAuth does require that there be a
user who has a secret (ie, a login/password) on the foreign server, and
that the user be asked for that secret and enter it (usually directly on
the foreign server, Shibboleth-style) before the first time the software
instance accesses the protected functionality.
Jonathan
Jonathan Rochkind wrote:
> MJ Ray wrote:
>
>> What is the use case? http://oauth.net/core/1.0a/ claimed "OAuth
>> creates a freely-implementable and generic methodology for API
>> authentication." Shouldn't we expect generic authentication to
>> include authenticating both peers?
>>
>>
> OAuth, as I understand it, is about confirming that (eg) Jonathan
> Rochkind has given authorization to Software A, to access API services
> that read and write to confidential information associated with Jonathan
> Rochkind's account on Server B. Server B can be sure that Jonathan
> Rochkind authorized Software A to do that. (Or someone that knew
> Jonathan Rochkind's secret password did, anyway). And additionally can
> let Jonathan Rochkind specify to Server B exactly _which_ services he'd
> like to authorize Software A to use, not just all or nothing. Which
> happens to be the problem case that ILS api stuff finds itself dealing
> with.
>
> I am fairly certain there is _no_ protocol that will allow you to
> securely prove that a piece of software on the network is really a
> trusted _copy_ of software, when copies of that software are distributed
> to untrusted users. It is not a solvable problem. I guess if OAuth
> documentation implies they solve it, you can fault them for implying it,
> but you can't fault them for not doing it. I am positive you will be
> able to find no protocol anywhere that does that. If you need that,
> then OAuth will work as well as anything else you can find -- that is,
> it won't work, and neither will anything else.
>
> Jonathan
>
>
|