首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AddMicrosoftIdentityWebApi如何知道如何验证Bearer令牌?

AddMicrosoftIdentityWebApi如何知道如何验证Bearer令牌?
EN

Stack Overflow用户
提问于 2022-12-02 15:28:43
回答 1查看 30关注 0票数 1

我们有一个SPA,它使用MSAL获取访问令牌、id令牌和刷新令牌,并将令牌缓存在本地存储中供以后使用。在此之后,我们有一个运行dotnet 6的Web,我在启动Program.cs中配置了身份验证,如下所示:

代码语言:javascript
复制
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddMicrosoftIdentityWebApi(builder.Configuration.GetSection("AzureAd"));

然后我有一个appsettings.json文件,其中包含AzureAD配置部分。

代码语言:javascript
复制
"AzureAd": {
    "Instance": "https://login.microsoftonline.com/",
    "Domain": "example.com",
    "TenantId": "guid",
    "ClientId": "guid",
    "Scopes": "access_as_user"
  }

这看起来挺好的。[Authorize]属性通过要求令牌来保护控制器。我的问题是,如果没有客户端的秘密,我如何能够信任来自SPA的访问令牌?在验证令牌的AddMicrosoftIdentityWebApi方法中是否存在一些魔术?

我快速查看了消息来源,但什么也没找到。

EN

回答 1

Stack Overflow用户

发布于 2022-12-02 17:58:31

免责声明:不是这个主题的专家,根据我自己使用https://www.youtube.com/watch?v=pJwtUjv3G_o的经验回答。这可能不适用于您获得实际访问令牌客户端的用例。

当您使用Microsoft.Identity.Web配置后端时,需要接触到Microsoft平台(Azure ),以便能够对用户或应用本身进行身份验证。这是使用客户端机密或客户端证书完成的。但这里的棘手之处在于这是什么时候发生的,以及它是否自动发生。

这是我使用团队令牌的经验:

  • 如果您断开服务器与互联网的连接,AuthenticationMiddleware将使您的请求立即失败,
  • 如果您试图使用另一个租户生成的令牌调用API,由于访问对象之间的不匹配,请求将无法通过。

因此,当不提供客户端机密/证书时,肯定有一定的保护级别,但我无法自信地告诉您到底是哪一点。

然而:

  • 如果您不提供客户端秘密并试图利用ITokenAcquisition.GetAuthenticationResultForUserAsync()来代表用户进行身份验证,您将得到如下异常:
代码语言:javascript
复制
MSAL.NetCore.4.44.0.0.MsalClientException:
        ErrorCode: Client_Credentials_Required_In_Confidential_Client_Application
Microsoft.Identity.Client.MsalClientException: One client credential type required either: ClientSecret, Certificate, ClientAssertion or AppTokenProvider must be defined when creating a Confidential Client.Only specify one.See https://aka.ms/msal-net-client-credentials.
  • 代表应用程序使用ITokenAcquisition.GetAuthenticationResultForAppAsync()进行身份验证也是一样的。

再一次,我的用例似乎与您的略有不同,因为我只得到一个无用的独立团队id令牌客户端,因此需要用户身份验证服务器端,而Teams token <-> Actually useful tokens交换正是在Microsoft.Identity.Web的帮助下发生的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74658061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档