关于azure:是否可以使用登录的Windows用户凭据对Web API进行身份验证?

Is it possible to use signed-in windows user credentials to authenticate to web API?

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

我在这里担心的是,设置Azure AD将需要客户端应用程序用户在设置AAD上花费大量精力,此外,他们还必须使用交互式对话框。如果没有人在场,情况会变得更糟,因为服务到服务的场景更加复杂。

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

相关问题:
OWIN Web API Windows服务-Windows身份模拟


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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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