【发布时间】:2019-04-24 13:05:00
【问题描述】:
当内部用户访问某些页面时,我们正尝试通过 Azure AD 对其进行身份验证。我们的服务器不在现场,因此我们正在寻找一个 API,我们可以在其中传递用户的用户名和密码,并接收他们是否在我们的组织中以及他们属于哪些组。在框架中是可能的。 .NET Core 是否存在这种情况?
更新: 感谢回复!现在似乎给了我授权码,现在我正在尝试使用它来获取令牌,然后使用该访问令牌来获取用户的组(如果我以错误的方式进行处理,请纠正我)。我的问题是我不断收到错误的请求错误。我已经检查了一堆参数,但找不到我缺少的东西。这是我当前的 API URL 设置,我错过了什么吗?
string postData = $"{{\"grant_type\":\"{grant_type}\",\"client_id\":\"{client_id}\",\"code\":\"{code}\",\"redirect_uri\":\"{redirect_uri}\",\"client_secret\":\"{client_secret}\"}}";
string redirectUrl = $"https://login.microsoftonline.com/{tenant_id}/oauth2/authorize?client_id={client_id}&response_type={response_type}&redirect_uri={redirect_uri}&response_mode={response_mode}&resource={client_id}";
string requestUriString = $"https://login.microsoftonline.com/{tenant_id}/oauth2/token";
更新 2:我发现出了什么问题,当需要 x-www-form-urlencoded 时,我将帖子数据作为 Json 字符串传递。
【问题讨论】:
-
Azure AD 不支持 LDAP。要做你想做的事,你需要使用 OpenID Connect,使用 Azure AD 对用户进行身份验证,并设置你的应用注册,以便你将他们的组成员身份作为 Id 令牌中的声明。尽管如果令牌过多,它们可能都不适合令牌,但在这种情况下,您需要从 Microsoft Graph API 查询用户的组成员身份。
-
感谢您的回答!一旦用户进入登录页面并通过身份验证,我该如何检索该表单发布数据?
-
该页面会将用户发送回您的站点,其中包含一个授权代码,然后您可以在后端交换访问令牌、ID 令牌和刷新令牌。访问令牌允许您调用 API,ID 令牌告诉您用户是谁,刷新令牌允许您在过期时获取新的访问令牌。
标签: c# asp.net-core azure-active-directory openid-connect