ACS的离子/ cordova认证

时间:2014-10-10 15:13:13

标签: authentication cors asp.net-web-api ionic-framework acs

背景 我们使用Azure ACS和ADFS进行WebAPI设置以进行身份​​验证。

通过浏览器访问任何WebAPI资源会将未经身份验证的用户重定向到通过ACS的ADFS登录页面。成功登录后,用户将被重定向以返回Url作为ACS中的设置以及安全令牌。这完全没问题。

问题: 我们正在使用Ionic框架(http://ionicframework.com/)开发移动应用程序。我们希望利用相同的ACS和ADFS进行身份验证,我们将其用于WebAPI。在此过程中,我们面临以下问题:

问题1: 通过移动应用程序(Ionic,cordova,angularjs)访问任何WebAPI资源会将用户重定向到ACS,我们会收到以下错误。

XMLHttpRequest无法加载https:// {domainname} .accesscontrol.windows.net / v2 / wsfederation?wa = ws ... 52fitem& wct = 2014-10-10T14%3a24%3a34Z& whr = https%3a%2f% 2F {域名} .COM。 No' Access-Control-Allow-Origin'标头出现在请求的资源上。起源' null'因此不允许访问。

因此,我们无法通过移动应用程序通过ACS对任何用户进行身份验证。

问题2: 在ACS中将返回URL设置为空会引发以下错误。 ACS90050:没有回复地址与依赖方委托人签订。

到目前为止采取的措施: - >我们在WebAPI上启用了CORS。

1 个答案:

答案 0 :(得分:0)

我们向微软提交了票证,看看是否可以在ACS启用CORS。我们收到了以下回复。

ACS没有提供我们研究可能性的CORS解决方案。不幸的是,答案仍然是:“没有ACS不提供CORS解决方案”。也就是说,ACS不允许我们访问标准跨域解决方案的根。此外,提供令牌被视为HTTPOnly,因为使用Javascript操纵令牌本质上是危险的。

如果您希望采用此路径,可以提供可用的示例,但由于安全方面的原因,不推荐使用此示例。下载发现的样本:

Windows Azure AD访问控制(ACS)代码示例:    https://code.msdn.microsoft.com/Windows-Azure-AD-Access-0dcde385

下面的示例:C#\ Webservice \ ACS2WindowsPhoneSample可能会提供一些指导,但我们无法协助修改样本。