【问题标题】:How to authenticate in Microsoft Graph with Microsoft personal accounts only?如何仅使用 Microsoft 个人帐户在 Microsoft Graph 中进行身份验证?
【发布时间】:2017-05-09 00:26:25
【问题描述】:

According to documentation,Microsoft Graph 仅支持来自 Azure AD v2.0 和 Azure AD 的令牌:

Microsoft Graph 支持两个身份验证提供程序:

  • 要使用个人 Microsoft 帐户(例如 live.com 或 outlook.com 帐户)对用户进行身份验证,请使用 Azure Active Directory (Azure AD) v2.0 端点。
  • 要使用企业(即工作或学校)帐户对用户进行身份验证,请使用 Azure AD。

但是,Azure AD v2.0 是支持两种 Microsoft 帐户类型的新端点:个人(以前的 Live 帐户)和工作/学校(经典 Azure AD 帐户)。目前还不清楚,如何将授权仅限于个人帐户。

Azure AD 仅支持工作/学校帐户。

那么,如果我想让我的应用只使用个人帐户,该怎么做? 如何在 Microsoft Graph 中仅使用 Microsoft 个人帐户进行身份验证(禁止用户使用工作/学校帐户)?

P.S.:如果重要的话,我会在我的应用中使用 MSAL 进行身份验证。

【问题讨论】:

  • 如果我正确理解您的问题,您想使用 Azure AD v2.0 并且只想限制对 Microsoft 帐户的访问。我的理解正确吗?
  • @GauravMantri,是的

标签: azure microsoft-graph-api msal


【解决方案1】:

根据Azure AD v2.0 的文档,如果您只想支持Microsoft Accounts,您希望使用的端点是https://login.microsoftonline.com/consumers/oauth2/v2.0/authorize。这里的关键是consumers,它将确保您的用户只能选择使用 Microsoft 帐户进行身份验证。

如果我选择Github example of MSAL,您将在Startup_Auth.cs 中进行更改

        app.UseOpenIdConnectAuthentication(
            new OpenIdConnectAuthenticationOptions
            {
                // The `Authority` represents the v2.0 endpoint - https://login.microsoftonline.com/consumers/v2.0
                // The `Scope` describes the initial permissions that your app will need.  See https://azure.microsoft.com/documentation/articles/active-directory-v2-scopes/                    
                ClientId = clientId,
                Authority = String.Format(CultureInfo.InvariantCulture, aadInstance, "consumers", "/v2.0"),
                RedirectUri = redirectUri,                    
                Scope = "openid email profile offline_access Mail.Read",
                PostLogoutRedirectUri = redirectUri,
                TokenValidationParameters = new TokenValidationParameters

【讨论】:

  • 谢谢,我今天花了一整天的时间处理这个和类似的代码。它必须工作,但目前不起作用。 Azure AD 存在问题,“他们正在努力修复它”。有关详细信息,请查看 MSAL git - github.com/AzureAD/microsoft-authentication-library-for-dotnet/…
  • 这是正确的,但为了确保只有消费者用户可以登录您的应用,您还应该验证生成的登录令牌的颁发者。 Here 是一些代码,展示了如何向您的应用程序添加额外的验证。我建议编辑您的答案以包含此部分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-24
  • 1970-01-01
  • 1970-01-01
  • 2019-10-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多