我正在查看以下隐式授权示例。
http://code.msdn.microsoft.com/OWIN-OAuth-20-Authorization-ba2b8783
我可以看到该示例如何将未经身份验证的用户重定向到同一授权服务器的登录页面。这是类似的事情:
Client ---> AuthServer ---> 401
|
<--- Login (UI) <------
(On Auth server)
我的问题是我不想授权服务器来处理登录页面的UI部分。这是我的授权服务器是一个web api,它唯一的工作是处理owin管道并通过webapi验证用户。
理想情况下,我想做的是,授权服务器以401响应客户端。客户端(可以是纯js应用程序)显示登录页面(用户名/密码)和POST到授权服务器,用户名/密码通过SSL和身份验证。服务器说你可以登录。
这将使所有客户端管理其登录页面的外观,但身份验证(逻辑)部分通过auth服务器webapi完成。
这可能吗? 在实现这个时,我是否需要注意任何安全隐含(仅针对此方案)?
由于
答案 0 :(得分:1)
如果授权服务器的实施支持&#34; Resource Owner Password Credentials Grant&#34;并允许您的应用程序使用它,您可以实现您的方案。但是,授权服务器不太可能。
OAuth 2.0的主要目的是允许第三方应用程序(如您的应用程序)访问最终用户(=资源所有者)的受保护资源,而无需通过最终用户&#39;第三方应用程序的凭据(用户名/密码)。因此,您的方案是OAuth 2.0试图避免的用例。
[评论您的其他问题]
如果您是授权服务器的实现者,是的,您可以实现&#34;隐式授权&#34;和&#34;资源所有者密码凭证授予&#34;。它取决于你。另一方面,如果您是访问由其他人(至少不是您)实现的授权服务器的客户端应用程序的实现者,您的客户端应用程序是否可以使用&#34;资源所有者密码凭据授予&# 34;取决于授权服务器的实现。我的意思是,通常授权服务器实现不会给第三方应用程序提供使用资源所有者密码凭证授权的机会,因为它是最后的手段和规范( RFC 6749)说&#34;授权服务器在启用此授权类型时应特别小心,仅在其他流不可行时允许。&#34; < / p>