Azure AD或带有Web API的IdentityServer,了解这些概念

时间:2018-01-24 08:52:19

标签: asp.net-web-api2 azure-active-directory identityserver4 restful-authentication

提前警告可能是noob问题。

我有点不确定Azure AD或IdentityServer应该在整个通信流程中适合的位置。

这是我经常遇到的情景。

某些“哑”客户端(例如,无法使用外部程序集或Web应用程序中的某些JavaScript的Windows应用程序)必须联系我的Web API,然后该API将联系其他API或其他资源。

如果我想尝试在Web API中实现Azure AD或IdentityServer作为身份验证和授权的方法,我不认为这可以通过任何其他方式完成,而不是必须是Web API与Azure AD或IdentityServer通信,因为客户端由于缺少必需的程序集而无法执行此操作。

如果这个假设不正确,那么我该怎么办呢?

如果它是正确的,那么当客户端必须将其凭据发送到Web API时,除了通过HTTPS进行通信之外,客户端和Web API之间还有什么安全措施,因此Web API可以对其进行身份验证和授权。用户对Azure AD还是IdentityServer?

2 个答案:

答案 0 :(得分:0)

如果我正确理解您的要求,那么您可以更改客户端Windows应用程序,但无法向其添加外部程序集?所以你将无法添加ADAL NuGet包。

您仍然可以使用Azure AD身份验证 - 可以自行实现客户端代码,但这并非易事。

或者,正如您已经提到的,您可以以某种方式将用户凭据传递给Web API,然后使用它来让Web API代表用户对Azure AD进行身份验证。有一个sample app,其中显示了如何使用用户名/密码凭据。

然而,这违背了整个OAuth / OpenIdConnect思维模式,您的应用永远不会知道用户的凭据。

答案 1 :(得分:0)

下面: https://github.com/MicrosoftDocs/azure-docs/blob/master/articles/active-directory/develop/active-directory-v2-protocols-oidc.md

小心尝试使用最新版本的Azure AD端点(只是不使用版本2.0,他们通过排除所有Azure AD webapp注册和"保护& #34;网络API只能让它们用于具有相同appid的应用程序 - 据我所知,在解决这两个问题之前它无法使用) - 请参阅" [!注意]"在v2.0限制的链接页面顶部附近。