我最近才开始研究 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:没有身份提供者与请求的协议匹配”。
如果有工作样本?如果我做的事情明显错误,我将不胜感激。