c# - 如何使用 C# WEB API(基于 token ).net core 对 Azure AD 应用程序进行身份验证和授权

标签 c# authentication azure-active-directory asp.net-core-webapi azure-ad-b2b

我能够为我的.netcore MVC应用程序+reactjs(计费应用程序)进行身份验证和授权 该应用程序将托管在 IIS 上,并在计划托管 .netcore Webapi 的同一台服务器上 (图表应用)。

通过使用计费应用程序,我们将调用图表 WebApis。现在WebApi 应该根据前端应用程序发送的 token 对用户进行身份验证/授权(基于 token 的 webapi 进行身份验证/授权,不再弹出登录窗口)

  1. 能够使用 postman-see img 生成 token 通过请求以下链接

    https://login.microsoftonline.com/ {{tenandId}}/oauth2/token

将将此 token 与 header 发送到 Web-API,该 API 将具有与计费应用程序相同的 Azure AD 应用程序配置(客户端 ID、范围等)。 API 应验证 token 并发送图表数据。

  • 应该在reactjs中尝试adal/msal并用Authorize属性装饰WebApis以便处理身份验证和授权吗?
  • 有很多链接,但很少有代码不起作用,很少有进程不再适用于 Azure,很少有代码庞大,但不是我想要的。

    基本上,我将在 .netcore 中托管一个执行身份验证部分的应用程序,现在 WebApi 也应该使用相同的用户 cookie/ token 进行身份验证,因为我不想提供另一个登录弹出窗口,请参阅很多 MS 示例代码,但没有运气

    哪种方法是正确的 1 或 2,并分享示例代码/链接任何赞赏的帮助,

    最佳答案

    根据我的理解,您有一个名为 Billing App 的客户端应用程序将登录用户并通过基于用户的访问 token 调用 API。 如果是这样,您应该注册两个应用程序,一个用于计费应用程序的客户端应用程序和一个服务端应用程序。对于客户端应用程序,因为这是客户端,您应该使用用户的凭据从 Azure AD 获取而不是应用程序客户端 secret 。要实现此目的,您应该将其配置为 Azure AD 上的公共(public)客户端并启用访问 token 和 ID token : enter image description here

    当您想要获取服务端应用程序的调用API时,您应该授予以下权限,以确保用户可以通过您的客户端应用程序获取访问 token (假设这里的“stanapitest”是服务端应用程序): enter image description here 请注意,请点击授予 Devchat 管理员同意按钮来完成权限授予流程。 enter image description here 完成此过程后,您可以通过密码流获取基于用户的访问 token :

    enter image description here

    OAuth2 grant code flow或 Oauth2 隐式授权流程,当然根据您的要求。

    好了,服务端到了,演示 .net core Api ,让我们在 VS 中创建一个简单的 .net core Api 项目:

    enter image description here

    项目创建后,将客户端ID更改为您的服务应用ID: enter image description here

    运行该项目并调用它的API,您可以看到它已受到Azure AD的保护: enter image description here

    使用基于用户的访问 token 来调用此 API: enter image description here

    正如你所看到的,它的工作原理是 excepted 。希望能帮助到你 。如果您还有任何疑问,请随时告诉我。

    关于c# - 如何使用 C# WEB API(基于 token ).net core 对 Azure AD 应用程序进行身份验证和授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59017343/

    相关文章:

    python - Tweepy 在 search_recent_tweets <> 上出现 401 错误,但在 create_tweet 时没有出现 401 错误?

    azure-active-directory - 带有确认屏幕的 Azure AD B2C 重置密码自定义策略

    azure - 使用 Azure AD 和 MSAL 的 SPA 应用程序之间的 SSO

    C# Wpf Visual Studio 毫无意义地坚持我的类在命名空间中不存在

    c# - 从 Oracle 读取问题

    c# - Read() 阻塞问题

    azure-active-directory - 身份验证后,Azure AD 重定向到错误的位置 (localhost)

    c# - RestSharp 响应错误 : "Only one usage of each socket address (protocol/network address/port) is normally permitted"

    authentication - 如何将社交登录集成到我现有的用户架构/登录系统?

    php - CodeIgniter认证系统