Cordova AAD服务器流认证在Android和iOS

时间:2016-07-25 19:54:16

标签: cordova azure azure-mobile-services azure-active-directory

我一直试图解决这个问题超过一个星期,但没有任何进展。我在使用Cordova Azure Mobile App插件和.NET / C#后端进行身份验证时遇到问题。

我正在关注创建适用于Android / iOS的Cordova应用tutorial。我添加了Azure Active Directory作为我的身份验证提供程序,基于此tutorial。我从Azure Portal for Cordova和.NET / C#后端下载了快速启动项目。

我部署了Azure移动应用后端,并通过在allowedExternalRedirectUrls中添加URL来更新资源浏览器以允许https://localhost:4000和https:// {myazurewebsite} .azurewebsites.net。我还更新了CORS以允许那些相同的URL。我将我的单点登录回复网址添加为https:// {myazurewebsite} .azurewebsites.net / .auth / login / aad / callback。我确保我的Cordova应用程序安装了InAppBrowser和Azure Mobile Apps插件。我更新了Content-Security-Policy以指向https://login.windows.net和https:// {myazurewebsite} .azurewebsites.net。我将onDeviceReady()函数更新为:

function onDeviceReady() {

    // Create a connection reference to our Azure Mobile Apps backend
    client = new WindowsAzure.MobileServiceClient('https://{myazurewebsite}.azurewebsites.net');

    // Login to the service
    client.login('aad')
        .then(function () {

            // BEGINNING OF ORIGINAL CODE

            // Create a table reference
            todoItemTable = client.getTable('todoitem');

            // Refresh the todoItems
            refreshDisplay();

            // Wire up the UI Event Handler for the Add Item
            $('#add-item').submit(addItemHandler);
            $('#refresh').on('click', refreshDisplay);

            // END OF ORIGINAL CODE

        }, handleError);
}

当我连接到 工作局域网时,我在Ripple 中执行Cordova应用程序时,应用程序会加载到Ripple,然后会打开第二个窗口,询问我的AAD凭据。我输入我的用户名,选项卡关闭,重定向开始发生,我已成功通过身份验证,并能够与教程中的ToDoItems进行交互。

当我连接到 公共网络时,在Ripple 中执行Cordova应用程序时,应用程序会加载到Ripple,然后会打开第二个窗口,询问我的AAD凭据。我输入了我的用户名,标签关闭,重定向开始发生,我会看到如下图所示的其他提示:

enter image description here

当我执行Cordova应用程序并将其连接公共网络时将其发送到Android或iOS设备时,我会收到要求的Cordova WebView(InAppBrowser)我的凭据。我输入用户名,按密码文本框,重定向开始。然后它只是进入一个空白的白页并挂在那里。

我错过了什么吗?当连接到公共网络时,为什么我在Ripple中得到第二个提示?为什么Cordova WebView在尝试仅验证用户名后显示空白屏幕?

Azure移动应用CORS设置: enter image description here

Azure移动应用AAD身份验证设置 enter image description here

Azure资源管理器设置: enter image description here

Express 设置Active Directory管理模式创建的Azure Active Directory WebApp enter image description here 委托权限集是默认权限:登录并阅读用户个人资料

2 个答案:

答案 0 :(得分:1)

看起来公共网络是在代理上设置的。然后,您正在代理代理,并且后端没有看到它期望的URL - 相反,它正在查看代理的URL。

我怀疑这是在“正常”移动情况下可以正常工作的事情之一。当你在公共网络上时,在真实设备上运行应用程序。

答案 1 :(得分:0)

问题是我的公司正在通过Azure向我们的本地ADFS服务器发送Azure AD身份验证请求。我们公司的基础设施小组需要在中间添加一个WAP(Web应用程序代理)服务器来拦截通信并允许此流程工作。

一旦他们添加了WAP服务器,就不再是问题了。