【问题标题】:How to use the Microsoft Graph mgt-people-picker component in .NET Core如何在 .NET Core 中使用 Microsoft Graph mgt-people-picker 组件
【发布时间】:2020-10-15 09:32:47
【问题描述】:

我是 Microsoft Graph API 的新手。我正在尝试开发一个概念证明 .NET 核心 MVC Web 应用程序,其中一个功能是让人员选择器从 Azure AD 搜索用户。

以下是我的做法:

<script src='https://unpkg.com/@@microsoft/mgt/dist/bundle/mgt-loader.js'></script>


`<mgt-msal-provider client-id="[Removed]"
               login-type="redirect"
               scopes="user.read,people.read"
               redirect-uri="[Removed]"
               authority="[Removed]"></mgt-msal-provider>`

`<mgt-people-picker></mgt-people-picker>`

我根据微软文档配置了以下信息:

`"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"Domain": "[Removed]",
"ClientId": "[Removed]",
"TenantId": "[Removed]",
"CallbackPath": "/signin-oidc"}`

不知何故,它无法搜索我的 Azure AD 用户,总是找不到它。 但是当我尝试使用&lt;mgt-mock-provider&gt;&lt;/mgt-mock-provider&gt; 时,我可以看到一个用户列表。

有没有什么可行的例子,有人可以给我看或引导我找到正确的方向,让我找到我需要的答案。

非常感谢您的帮助。

【问题讨论】:

  • 你指的是什么文件?并请分享搜索Azure AD用户的代码。
  • 我正在尝试按照此示例 github.com/Azure-Samples/… 和 docs.microsoft.com/en-us/graph/toolkit/components/… 在 .NET Core MVC 中执行人员选择器功能,但是,我不知道该怎么做。以上是我用来从 Microsoft Graph API 加载人员选择器功能的代码。但它不起作用。
  • 你看过 react 实现吗 - stackoverflow.com/questions/60368108/…?
  • @Dev 是的,但这是使它工作的唯一方法吗?我更喜欢寻找 .NET Core MVC 示例。我也不确定如何将其转换为 MVC 类型。有什么我可以进一步参考的例子吗?我更喜欢这篇文章中使用的解决方案stackoverflow.com/questions/63172718/…
  • @Henry 你问的是 Javascript 组件,而不是 Graph API。后端技术是什么并不重要,该组件在浏览器上运行。您可以在 ASP.NET Core 或静态 HTML 文件中使用它,没关系。只需在页面中包含必要的 Javascript 库

标签: c# asp.net-mvc .net-core azure-active-directory microsoft-graph-sdks


【解决方案1】:

您缺少登录操作。

请加&lt;mgt-login&gt;&lt;/mgt-login&gt;。

我从您分享的link 下载示例代码。

按照该链接中的步骤进行配置后,我将以下代码添加到Index.cshtml 文件中。

<div class="text-center">
    <h1>Welcome!</h1>
    <script src="https://unpkg.com/@@microsoft/mgt/dist/bundle/mgt-loader.js"></script>
    <mgt-msal-provider client-id="{client id}"
                       login-type="redirect"
                       scopes="user.read,people.read"
                       redirect-uri="https://localhost:44321/"
                       authority="https://login.microsoftonline.com/{my tenant}.onmicrosoft.com"></mgt-msal-provider>
    <mgt-login></mgt-login>
    <mgt-people-picker></mgt-people-picker>
</div>

appsettings.json是这样的:

  "AzureAd": {
    "Instance": "https://login.microsoftonline.com/",
    "Domain": "{my tenant}.onmicrosoft.com",
    "TenantId": "{tenant id}",
    "ClientId": "{client id}",
    "CallbackPath": "/signin-oidc",
    "SignedOutCallbackPath ": "/signout-callback-oidc",
    // To call an API
    "ClientSecret": "{client secret}"
  },

我登录后首页是这样的:

【讨论】:

  • 你是对的,在我添加登录操作后,我能够让它工作。另一件事是我也使用了错误的域 url,这也是原因之一,当我尝试所有可能性时,它不起作用。另一个问题,如果不使用登录操作,有可能让它工作吗?我实际上实现了单点登录,用户登录信息已经存在。有可能吗?
  • @Henry 我对此不是很清楚。但我认为你应该看看这个docs.microsoft.com/en-us/graph/toolkit/providers/custom
  • @'Allen Wu' 感谢您的帮助。我将对此进行进一步探索。再次感谢。只需在上述更改之外更新您,我还添加了新的 API 权限:People.Read(经管理员同意)、ClientSecret 和注销 url。再次感谢您的帮助
猜你喜欢
  • 2021-09-26
  • 1970-01-01
  • 2021-07-27
  • 2021-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-18
相关资源
最近更新 更多