可以使用登录的Windows用户凭据对Web API进行身份验证吗?

时间:2018-11-17 01:11:34

标签: windows azure authentication azure-active-directory windows-authentication

我正在为向Web API发出Web请求的命令行客户端应用程序实施身份验证。如果我有正确的理由,我可以申请Azure Active Directory native app authentication scenario

我在这里担心的是,设置Azure AD将需要客户端应用程序用户在设置AAD上花费大量精力,此外,他们还必须使用交互式对话框。万一service to service场景更加复杂,万一没有人在场,情况将更加恶化。

是否可以改为依靠客户端计算机的登录用户的凭据?假设已加入域的基于Windows的客户端计算机,例如FooDomain。该服务器使用基于OWIN的自托管实现Katana

相关问题:
OWIN Web API Windows Service - Windows Identity Impersonation

1 个答案:

答案 0 :(得分:2)

@Konrad Jamrozik。如果您正在使用.NET,并且希望使用已加入Windows域的登录用户(您的情况),甚至加入了AAD,我的建议是将MSAL.NET与集成Windows身份验证(IWA)覆盖一起使用。参见https://aka.ms/msal-net-iwa。简化的代码如下所示:

string authority = "https://login.microsoftonline.com/contoso.com";
string[] scopes = new string[] { "user.read" };
PublicClientApplication app = new PublicClientApplication(clientId, authority);
var accounts = await app.GetAccountsAsync();

AuthenticationResult result=null;
if (accounts.Any())
{
 result = await app.AcquireTokenSilentAsync(scopes, accounts.FirstOrDefault());
}
else
{
  result = await app.AcquireTokenByIntegratedWindowsAuthAsync(scopes);
}    

此示例说明了如何注册该应用,并提供了有关代码的所有详细信息:https://github.com/azure-samples/active-directory-dotnet-iwa-v2