2014-10-10 289 views
0

背景: 我们有一个WebAPI与Azure ACS和ADFS进行身份验证。使用ACS进行离子/科尔多瓦认证

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

问题: 我们正在开发一个使用Ionic框架(​​)的移动应用程序。我们希望利用相同的ACS和ADFS进行用于WebAPI的身份验证。在这个过程中,我们面临以下问题:

问题1: 通过移动应用程序访问任何资源的WebAPI(离子型,科尔多瓦,angularjs)重定向用户ACS,我们可以得到下面的错误。

的XMLHttpRequest无法加载的https:// {域名} .accesscontrol.windows.net/V2/wsfederation WA = WS ...... 52fitem & WCT = 2014-10-10T14%3a24%3a34Z & WHR = HTTPS%3A%2F %2F {域名} .COM。请求的资源上没有“Access-Control-Allow-Origin”标题。因此不允许原产地'null'访问。

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

问题2: 在ACS中将返回URL设置为空将引发以下错误。 ACS90050:没有回复地址与信赖方负责人联系。

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

回答

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#\ web服务\ ACS2WindowsPhoneSample可以提供一些指导,但我们将无法协助修改例子。