Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何验证用户';试图访问Azure AD中托管的Web Api的用户名/密码?_Asp.net_Api_Authentication_Azure_Active Directory - Fatal编程技术网

Asp.net 如何验证用户';试图访问Azure AD中托管的Web Api的用户名/密码?

Asp.net 如何验证用户';试图访问Azure AD中托管的Web Api的用户名/密码?,asp.net,api,authentication,azure,active-directory,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 u

我正在尝试为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内我的应用程序页面中的授权端点时,我看到以下选项:

  • 联邦元数据文件
  • WS-FEDERATION登录端点
  • SAML-P登录端点
  • SAML-P签出端点
  • Microsoft AZURE AD图形API端点
  • OAuth2.0令牌端点
  • OAuth2.0授权端点

在尝试此基本身份验证之前,我使用身份验证代码流尝试了OAuth2.0,但无法使其正常工作(可能是过度使用?),因为我们希望能够为用户提供一个令牌,并允许他们立即开始进行调用,而无需重定向到浏览器,等等。我们的用户将主要使用桌面应用程序…

Azure AD附带了许多客户端库,使您可以轻松获取令牌并在web API调用中使用它。如果您要针对的开发堆栈已涵盖在内(例如.NET desktop、android、iOS、windows store、winphone…),那么您就处于一个非常好的位置:只需从中下载一个与您的场景(本机客户端)近似的示例,您就可以上路了。 如果你所使用的技术没有被涵盖,事情就复杂了一点。您可以做的一件事是检查任何现有库的源代码(它们都是OSS,可在github上获得),并用您选择的语言/堆栈复制它。 希望这有帮助!
V.

我假设您有一些客户端应用程序正在收集用户名/密码并调用API。通常,此客户端应用程序会调用Azure AD以获取身份验证令牌,然后在API调用中包含身份验证令牌。@BenV,您能否更详细地了解“调用Azure AD”的含义?这就是我困惑的地方。有所有这些不同的auth端点和流,比如Oauth和SAML-P,但是我如何做类似于。。。尝试(azure.login(用户名、密码))?我只需要基本的身份验证,也就是我刚才描述的流程。不可能像您所希望的那样通过网络向Azure广告发送用户名/密码。您可以使用Graph API查询用户名是否存在,但您必须使用标准协议之一进行身份验证。@BenV我希望使用这样的流(OAuth2.0),但有两个问题:1)我公司的应用程序是桌面应用程序(用非.net语言编写)。所以我不知道如何在重定向URI中捕获身份验证代码。2) 如果我们想让不使用我们的应用程序的开发人员访问,该怎么办。他们必须编写一个浏览器来捕获重定向uri中的身份验证代码?也许我想得太多了,或者错过了一步?1)见下面维托里奥的答案。2) 用户如何对您的桌面应用程序或这些其他开发人员的应用程序进行身份验证?