【问题标题】:How to get current token from Azure ActiveDirectory application如何从 Azure ActiveDirectory 应用程序获取当前令牌
【发布时间】:2014-05-30 19:54:42
【问题描述】:

我有一个使用 Visual Studio 2013 项目模板创建的 ASP.NET 应用程序。出于安全考虑,我选择了 Azure Active Directory。我已经完成了所有登录工作,但我想开始使用 Graph API 来管理我的应用程序中的用户。我创建了一个用于 Azure AD 的应用程序密钥,但我不太确定如何进行图形调用。

我在https://github.com/AzureADSamples/WebApp-GraphAPI-DotNet 研究过代码,但是以这种方式使用图形 API 需要一个令牌。

在我的 ASP.NET 应用程序成功登录到 AD 后,有没有办法从我的应用程序中获取一个可以用来调用图形 API 的令牌?也许通过向 Global.asax 添加一个方法?

还有其他方法可以从使用此项目模板创建的 ASP.NET 应用程序中调用图形 API 吗?

【问题讨论】:

    标签: c# asp.net azure active-directory


    【解决方案1】:

    确实,您确实需要一个 OAuth 令牌,您的 Web 应用程序可以使用该令牌代表已登录的用户访问 Graph API。如果您使用的是 .Net,则您正在查看正确的示例 - OpenID Connect 是推荐的协议,用于登录用户并获取访问 Graph API 的授权代码:https://github.com/AzureADSamples/WebApp-GraphAPI-DotNet

    1. OpenIDConnect(SSO + Auth Code Grant 流程)在用户单击登录链接时开始。查看 _LoginPartial 视图 (https://github.com/AzureADSamples/WebApp-GraphAPI-DotNet/blob/master/WebAppGraphAPI/Views/Shared/_LoginPartial.cshtml) 和 AccountController 中的 SignIn Action。
    2. 主要的魔力发生在 Startup.Auth.cs (https://github.com/AzureADSamples/WebApp-GraphAPI-DotNet/blob/master/WebAppGraphAPI/App_Start/Startup.Auth.cs) 中:它在事件 AccessCodeReceived 上配置一个委托,以将 OAuth 访问代码兑换为资源的刷新令牌和访问令牌(图形 API),并将令牌缓存中的令牌。
    3. 参见 AuthUtils 类 (https://github.com/AzureADSamples/WebApp-GraphAPI-DotNet/blob/master/WebAppGraphAPI/Utils/AuthUtils.cs):GetAuthToken 方法首先尝试从令牌缓存中检索访问令牌。如果访问令牌和刷新令牌已过期,它会重新验证用户以使用新的刷新令牌填充令牌缓存。
    4. 请参阅 TokenCacheUtils 类 (https://github.com/AzureADSamples/WebApp-GraphAPI-DotNet/blob/master/WebAppGraphAPI/Utils/TokenCacheUtils.cs):它调用 AAD 令牌端点以获取资源的访问令牌(在您的情况下为图形 API),使用代码使用刷新令牌

    希望对你有帮助

    【讨论】:

    • 感谢您的澄清。由于我使用的是内置的 Azure AD ASP.NET 项目模板,我不确定它是如何登录到 AD 的。我希望有某种方法可以获得与 Startup.Auth.cs 相同的令牌,并在我的项目中使用 TokenCacheUtils 和 AuthUtils。
    • 知道了——默认的 VS2013 模板使用 WSFederation 来使用 AAD 设置单点登录,它没有配置 OAuth 流来获取令牌以代表用户访问 Graph。您可以根据此示例向其中添加 OAuth 流程:code.msdn.microsoft.com/AAL-Server-to-Server-9aafccc1,但我建议您改用我在答案中提到的更高效和推荐的 OpenIDConnect 流程(SSO + OAUth)。
    • 谢谢,这就是我开始做的事情。
    • 这一切都由 Active Directory 身份验证库 (ADAL) 处理吗? (在 Nuget 上:Microsoft.Experimental.IdentityModel.Clients.ActiveDirectory)
    猜你喜欢
    • 2019-04-16
    • 1970-01-01
    • 2020-03-06
    • 2022-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-26
    相关资源
    最近更新 更多