2

我最近才开始研究 ACS、AAL、WAAD,我想避免将用户重定向到他们 IDP 的登录页面。我想将我的用户保留在我的站点中,并为他们提供一个下拉列表以选择他们希望与谁进行身份验证以及请求用户名和密码的区域,然后通过代码获取令牌。这可能吗?

我一直在审查一些示例应用程序并制作了一个快速模型,但似乎无法让事情正常工作,例如

        _authContext = new AuthenticationContext("https://littledeadbunny.accesscontrol.windows.net");

        string enteredEmailDomain = UserNameTextbox.Text.Substring(UserNameTextbox.Text.IndexOf('@') + 1);

        IList<IdentityProviderDescriptor> idpdList = _authContext.GetProviders("http://littledeadbunny.com/NonInteractive");
        foreach (IdentityProviderDescriptor idpd in idpdList)
        {
            if (String.Compare(ServiceRealmDropDownList.SelectedValue, idpd.Name, StringComparison.OrdinalIgnoreCase) == 0)
            {
                Credential credential;
                credential = new UsernamePasswordCredential(enteredEmailDomain, UserNameTextbox.Text, PasswordTextbox.Text);

                _assertionCredential = _authContext.AcquireToken("http://littledeadbunny.com/NonInteractive", idpd, credential);

                return;
            }
        }

使用上面的代码,当我尝试使用 Windows Azure Active Directory 用户(管理员)时,我收到错误“根级别的数据无效。第 1 行,位置 1。” 我尝试获取令牌的地方。

当我使用 Google 时,我收到错误“0x8010000C:没有身份提供者与请求的协议匹配”。

如果有工作样本?如果我做的事情明显错误,我将不胜感激。

4

2 回答 2

1

被动身份提供者不支持此功能。Google、Facebook 等 IdP 不希望其他人为他们收集凭据,因为这会导致安全问题和可能的网络钓鱼攻击。他们也不支持它,因为他们需要能够显示权限对话框(询问用户是否要向您发布数据的屏幕),如果没有浏览器重定向到他们,他们就无法做到这一点。此外,谷歌特别支持双因素身份验证,这是您无法复制的,并且通常收集凭据会围绕其他 UI 问题(例如不正确或忘记密码)打开整罐蠕虫病毒。

这通常也是一种糟糕的用户体验,因为您的用户很可能已经登录到 Google 并在那里拥有 cookie。如果是这样,并且他们已经同意您的应用程序,他们只会被默默地重定向回您。在您的场景中,即使用户已经登录,他们仍然必须提供用户名/密码。

进行此类登录的正确方法是在您的应用程序中呈现浏览器控件,以允许用户在其 IdP 上登录,这正是 AAL 提供的帮助。

于 2013-03-05T19:17:42.537 回答
0

我有同样的错误,执行 powerscript 解决了该错误

PS C:\windows\system32> $replyUrl = New-MsolServicePrincipalAddresses -Address https://mydomain.accesscontrol.windows.net/

PS C:\windows\system32> New-MsolServicePrincipal -ServicePrincipalNames @(" https://mydomain.accesscontrol.windows.net/ ") -DisplayName "MyDomain Namespace" -Addresses $replyUrl

但无论如何我都遇到了 403 权限错误

如果您进一步了解,我想知道如何:)

于 2013-04-05T11:59:50.630 回答