如何验证用户的名称/密码,以尝试访问Azure AD中托管的Web Api?

时间:2014-09-05 19:21:37

标签: asp.net api authentication azure active-directory

我正在尝试为Azure中托管的ASP.net Web Api提供基本身份验证。我已经到了从API内部的http基本身份验证请求中提取用户名/密码的地步。我正在按照一个教程说明当你达到这一点时这样做:

               //You can use Websecurity or asp.net memebrship provider to login, for
                //for he sake of keeping example simple, we used out own login functionality
                if (TheRepository.LoginStudent(userName, password))
                {
                    var currentPrincipal = new GenericPrincipal(new GenericIdentity(userName), null);
                    Thread.CurrentPrincipal = currentPrincipal;
                    return;
                }

显然,他正在验证某些“存储库”中的凭据,仅用于示例。我该怎么做来验证我在Azure AD中添加的用户的凭据? (只是为了快速,是的,你是一个用户,你经过身份验证,继续......)当我在azure AD的应用程序页面中查看授权端点时,我看到以下选项:

  • FEDERATION METADATA文件
  • WS-FEDERATION SIGN-ON ENDPOINT
  • SAML-P SIGN-ON ENDPOINT
  • SAML-P SIGN-OUT ENDPOINT
  • WINDOWS AZURE AD GRAPH API ENDPOINT
  • OAUTH 2.0 TOKEN ENDPOINT
  • OAUTH 2.0 AUTHORIZATION ENDPOINT

我在尝试使用此基本身份验证之前尝试了使用身份验证代码流程的OAuth2.0,但无法让它工作(可能是矫枉过正?)因为我们希望能够为用户提供令牌并允许他们立即开始拨打电话必须重定向到浏览器等。我们的用户将主要使用桌面应用程序......

1 个答案:

答案 0 :(得分:1)

Azure AD附带了许多客户端库,可以轻松获取令牌并在Web API调用中使用它。如果覆盖了你所针对的开发堆栈(例如.NET桌面,android,iOS,windows商店,winphone ......),那么你就是一个很好的选择:只需从{{下载一个与你的场景(本机客户端)近似的样本。 3}},你就可以了。 如果您所使用的技术未被涵盖,则事情会更复杂一些。您可以做的一件事是检查任何现有库的源代码(它们都是OSS并在https://github.com/AzureADSamples/的github上可用)并以您选择的语言/堆栈重现它。 希望这可以帮助! 诉