Ionic2 在Ionic 2应用程序中验证用户输入的用户名和密码';s登录屏幕,Azure Active Directory使用ADAL库

Ionic2 在Ionic 2应用程序中验证用户输入的用户名和密码';s登录屏幕,Azure Active Directory使用ADAL库,ionic2,azure-active-directory,adal,adal.js,Ionic2,Azure Active Directory,Adal,Adal.js,我正在开发一个Ionic 2应用程序,该应用程序根据Microsoft Azure Active Directory对用户进行身份验证。无法确定如何使用ADAL实现以下流程: 用户输入“用户名”和“密码”==>点击登录按钮=>应用程序通过传递用户输入的“用户名”和“密码”=>Azure AD验证用户并返回结果来进行Azure AD调用 在Azure广告文档之后,我成功地实现了“服务器流”,在进行Azure广告呼叫时,它会打开一个新的Microsoft Azure广告登录页面,让我的应用程序输入“

我正在开发一个Ionic 2应用程序,该应用程序根据Microsoft Azure Active Directory对用户进行身份验证。无法确定如何使用ADAL实现以下流程:

用户输入“用户名”和“密码”==>点击登录按钮=>应用程序通过传递用户输入的“用户名”和“密码”=>Azure AD验证用户并返回结果来进行Azure AD调用

在Azure广告文档之后,我成功地实现了“服务器流”,在进行Azure广告呼叫时,它会打开一个新的Microsoft Azure广告登录页面,让我的应用程序输入“用户名”和“密码”。成功验证后,用户将返回到我的应用程序主页。这很好,但从用户体验的角度来看,体验不是很好

以下是我的做法:

myAzure = new WindowsAzure.MobileServiceClient(MY_AZURE_APP_SERVICE_URL);
myAzure .login('aad').then(
        (result) => {
            //Successful Login
        }, 
        (err) {
            console.log("In client.login callback failed");
        });
});
然后,我按照Azure AD文档实现了“客户端流”。我有一个问题:

1.在调用“authContext.acquireTokenSilentAsync()”或“authContext.acquireTokenAsync()”时,如何将“用户名”和“密码”传递给Azure AD

在ADAL库中完成这些方法的实现后,似乎

  • authContext.acquireTokenSilentAsync()”只能接受用户名,不能接受密码。那么,假设此方法不用于登录目的是否安全
  • authContext.acquireTokenAsync()”可以接受用户名,但另外还有一个名为“extraQueryParameters”的参数。我是否应该使用此参数传入密码?但是,这应该会在屏幕上为用户打开一个登录页面。它确实在我的设备上打开了一个新的登录页面。所以我不知道如何开发我的功能
如果以上两种方法都不是实现我的身份验证流程的正确方法,那么有人能帮我提供一些关于如何实现的指针、链接或示例链接吗

我的应用程序的用户将在我们公司的Azure-AD中。我已经为我的应用程序创建了一个单独的Azure AD租户(还创建了所需的设置,以便它与我的Azure应用程序服务等绑定),并且我会在需要时将用户添加到此租户


谢谢。

根据我的理解,客户端管理的身份验证流程使您能够为用户提供单一登录体验或从身份提供商检索其他用户数据

这意味着,如果您在移动身份验证之前没有对身份数据提供商进行身份验证,它仍然需要提示用户输入用户名和密码

“authContext.acquireTokenSilentAsync()”只能接受用户名,不能接受密码。那么,假设此方法不用于登录目的是否安全

此方法设计用于通过从缓存中获取令牌或使用刷新令牌更新令牌以静默方式获取令牌。它不是为此目的而设计的

“authContext.acquireTokenAsync()”可以接受用户名,但另外还有一个名为“extraQueryParameters”的参数。我应该使用这个参数来传递密码吗?但是,这应该会在屏幕上为用户打开一个登录页面。它确实在我的设备上打开了一个新的登录页面。所以我不知道如何开发我的功能

不可以。您无法使用此功能传递密码。默认情况下,它会提示用户输入用户名和密码。但是,如果您已登录Azure AD,则可以通过指定
PromptBehavior来获取访问令牌,而无需提示。永远不要像下面这样:

var resoult = authContext.AcquireTokenAsync(resource, clientId,new Uri("http://localhost"),new PlatformParameters( PromptBehavior.Never)).Result;
Console.WriteLine(resoult.AccessToken);

你对这个问题有什么意见吗?请随时让我知道,如果你仍然有这个问题的问题。