2013-03-05 46 views
2

我最近才看到ACS,AAL,WAAD,我想避免将用户重定向到其IDP的登录页面。我想让我的用户保留在我的网站中,并向他们展示一个下拉框,以选择他们想要进行身份验证的用户以及要求输入用户名和密码的区域,然后通过代码获取令牌。这可能吗?ACS--绕过用户重定向到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:没有身份提供者匹配请求的协议”。

如果有工作样品?如果我正在做一些明显错误的事情,我会赞赏纠正。

回答

1

这不支持被动身份提供程序。像谷歌,Facebook等IdPs不希望其他人为他们收集证书,因为这会导致安全问题和可能的网络钓鱼攻击。他们也不支持它,因为他们需要能够显示权限对话框(询问用户是否想要向你发布数据的屏幕),这是他们在浏览器重定向到他们的情况下无法做到的。此外,谷歌特别支持双因素认证,这是你无法复制的,而且通常收集证书会在围绕其他用户界面问题(例如不正确或被遗忘的密码)周围发现整个蠕虫。

这通常也是一种糟糕的用户体验,因为您的用户很可能已经登录到Google并在那里存在Cookie。如果是这样,并且他们已经同意了你的应用,他们只会默默地重定向到你。在你的情况下,即使用户已经登录,他们仍然需要提供用户名/密码。

执行这些类型登录的正确方法是在您的应用中呈现浏览器控件,以允许用户在他们的IdP中登录,这是AAL帮助的。

+0

感谢奥伦如何,这是有道理的。这是否也适用于Office365和Windows Azure Active Directory?我知道这些可以与本地目录同步,并且在访问业务线应用程序时,用户熟悉点击​​内部登录屏幕。在这种情况下浏览器控件是否适用,以及要求用户通过浏览器控件对WAAD或Office 365进行身份验证? 对不起,如果这听起来很愚蠢,这对我来说都是非常新的。 – user2135771 2013-03-05 20:58:08

+0

让用户使用浏览器控件登录到O365或Azure AD是完全合适的。 – 2013-03-06 01:01:40

+0

感谢您的信息。浏览器控制是唯一的选择,是否有其他方式来管理认证过程?有没有样品或指南能够做到这一点?这将整理我的学习曲线。谢谢你的时间。 – user2135771 2013-03-06 11:20:46

0

我有同样的错误,执行的PowerScript解决了这一错误

PS C:\ Windows \ System32下> $ replyUrl =新MsolServicePrincipalAddresses - 地址https://mydomain.accesscontrol.windows.net/

PS C:\ WINDOWS \ SYSTEM32>新MsolServicePrincipal -ServicePrincipalNames @( “https://mydomain.accesscontrol.windows.net/”)-DisplayName “MYDOMAIN的命名空间” -Addresses $ replyUrl

但我有403权限错误

反正卡住如果你得到任何进一步的我想知道:)