我正在为向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
答案 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