我有一个用C#编写的REST API,我需要使用现有的Azure AD服务进行身份验证。我目前拥有希望进行身份验证的用户的用户名和密码。我需要使用Azure AD进行身份验证,并从服务器接收访问令牌。
有人可以指点我解释如何做到这一点的一些文章/教程的方向?
答案 0 :(得分:17)
您应该避免处理用户凭据。收集通过使用OAuth 2.0或OpenID Connect来获取令牌而不直接处理凭据而减轻的用户凭据时,会产生严重的安全隐患。此外,如果您拥有自己的凭据集合UI,那么如果启用了多因素身份验证,您可能会发现将来登录失败。在这种情况下,可能需要更多信息来验证用户而不是收集信息,例如一次性密码。如果您允许Azure AD通过OAuth 2.0或OpenID Connect提供身份验证体验,那么您将与所使用的特定身份验证方法隔离。如果可能的话,收集用户Azure AD凭据是一种不好的做法。
我没有足够详细的具体情况确信以下示例适用,但它至少会提供一个良好的起点。此示例演示如何创建调用REST API的本机应用程序,然后以最安全的方式调用Azure资源。
https://github.com/AzureADSamples/WebAPI-OnBehalfOf-DotNet
您可以在此处找到许多其他样本,可用于为您的特定方案构建解决方案。
https://github.com/AzureADSamples
如果您提供更多详细信息,我可以提供更具体的指导。
答案 1 :(得分:4)
要点: 创建UserCredential
UserCredential uc = new UserCredential(user, password);
使用UserCredential
调用其中一个AcquireToken()函数public AuthenticationResult AcquireToken(string resource, string clientId, UserCredential userCredential);
public Task<AuthenticationResult> AcquireTokenAsync(string resource, string clientId, UserCredential userCredential);