将Azure ACS颁发的令牌传递给PhoneGap客户端

时间:2013-11-19 17:54:34

标签: authentication azure cordova acs

我有一个使用Azure ACS,Windows身份和被动重定向保护的组合Web API和MVC应用程序。这很好用。现在我正在使用PhoneGap添加移动应用程序,该应用程序调用现有应用程序的API。我无法弄清楚如何在移动客户端上实现身份验证。我得到它主要工作,但由于ACS中的返回URL设置,我无法将令牌送到客户端。场景是:

  • 移动客户端向API发送get请求
  • 如果用户未经授权,API将以401响应
  • 客户端重定向到ACS登录页面,用户进行身份验证
  • 令牌被发送到返回URL,该URL是在Web服务器上运行的应用程序

例如,如果我在localhost:63327上运行客户端应用程序,则会将令牌发送到localhost:58392,因为这是ACS配置中的返回URL。

如何将令牌送到我的移动客户端?

2 个答案:

答案 0 :(得分:2)

我看到人们并不真正理解你的问题。

此解决方案可能有效。

简而言之,就是添加一个新协议以从服务器向应用客户端获取身份验证令牌。

  1. PG App调用向Auth注册请求的Web方法:

    POST BeginGethAuthToken id =皮卡Guid pswd =提取密码

    BeginGetAuthToken可以是登录页面中的Web方法。

    服务器将拾取器guid与拾取密码相关联

  2. PG Apps通过使用InAppBroser打开登录页面来启动身份验证流程

    mywebapp.com/AppLogin.aspx?id= {pickup guid}

    将提取guid设置为您的webapp域的cookie。

  3. 用户使用InAppBrowser完成身份验证。

  4. 成功身份验证时,AppLogin.aspx将提取guid与身份验证令牌相关联,并要求用户关闭浏览器以返回应用

  5. PG App通过提供取件密码来获取身份验证令牌。

  6. 请注意,为了安全起见,服务器需要添加提货指南的过期策略,这样一次只有一个应用程序可以使用guid,并在发生冲突时重新启动该进程。

答案 1 :(得分:0)