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的客户端计算机,例如
相关问题:
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