如何从Azure ActiveDirectory应用程序获取当前令牌

时间:2014-05-30 19:54:42

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

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

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

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

是否有另一种方法可以从使用此项目模板创建的ASP.NET应用程序中调用图形API?

1 个答案:

答案 0 :(得分:4)

实际上,您确实需要一个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令牌端点以获取资源的Access令牌(在您的情况下为Graph API),使用代码刷新令牌
  5. 希望这有帮助