【问题标题】:Accessing token for current session / user访问当前会话/用户的令牌
【发布时间】:2019-08-09 16:11:04
【问题描述】:

我已经使用 AAD 身份验证保护了一个 azurewebsites 域

我已经导航到首页,登录B2C账号,可以访问Azure网站的内容——API、Views

令我感到困惑的是,我以前每次都这样做,它来自 Xamarin 应用程序内的 MSAL 或 ADAL 库。然后我就知道如何检索和使用令牌了

由于我刚刚登录并浏览该站点,如果我想编写一些代码来使用令牌与后端交互,我该如何开始编写代码来访问当前令牌?当我登录应用程序时,它是否保存在某个地方?

对这个问题的更新:我决定通过调用 AcquireTokenSilentAsync 来查看会发生什么,它以“在缓存中未找到令牌”作为响应。

我不希望用户在登录后必须再次登录,请问如何从初始登录中获取可以使用的令牌?

【问题讨论】:

标签: azure azure-active-directory azure-web-app-service azure-ad-b2c


【解决方案1】:

从您的服务器代码中,特定于提供程序的令牌被注入到请求标头中,因此您可以轻松访问它们。参考文档here

例如,在您的代码中获取访问令牌。

string accessToken = this.Request.Headers["X-MS-TOKEN-AAD-ACCESS-TOKEN"];

【讨论】:

    【解决方案2】:

    因此,MSAL 不会存储其缓存,除非您为其提供通路。有 3 种常见的令牌缓存提供程序:

    • 在内存中
    • 会话
    • 数据库

    我建议你查看这个项目的缓存实现思路:https://github.com/Azure-Samples/active-directory-aspnetcore-webapp-openidconnect-v2/tree/master/Microsoft.Identity.Web/Client/TokenCacheProviders。 如果您不想使用其中任何一个,如果您的 PublicClientApplication 是单例对象,您将使用 AcquireTokenSilentAsync 检索缓存的令牌。

    关于每次需要令牌时都要求用户登录,这是不可以的。用户只需登录一次,然后 MSAL 将静默完成其工作。

    【讨论】:

    • 对不起,我不明白,我没有在代码中触发 MSAL - 我已经完成了,所以我知道它是如何工作的,但这对我来说是一个新的,我想要构建一个 Web 应用程序,默认情况下,当您导航到 azurewebsites 域时,它会让您登录 - 所以我的问题是这是否会导致一个 cookie,然后我可以使用 ADAL 库读取?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-16
    • 1970-01-01
    • 2017-02-23
    • 2014-09-04
    • 1970-01-01
    • 1970-01-01
    • 2010-12-31
    相关资源
    最近更新 更多