【问题标题】:OpenId Connect Authentication .NET CoreOpenId 连接身份验证 .NET Core
【发布时间】: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


【解决方案1】:

我不完全确定这会解决您的问题,但您可能想查看以下 .NET Core 示例(使用 MSAL.NET):https://github.com/Azure-Samples/active-directory-dotnetcore-console-up-v2

这是通常的免责声明,我们真的不建议任何人使用用户名/密码。还有其他更好的可能性。全图见https://aka.ms/msal-net-scenarios

【讨论】:

    猜你喜欢
    • 2019-03-14
    • 2018-06-25
    • 2019-06-14
    • 2015-03-11
    • 2018-12-17
    • 2020-10-28
    • 2020-10-15
    • 2021-04-02
    • 2019-09-10
    相关资源
    最近更新 更多