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

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

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

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

最佳答案

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


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


希望这可以帮助

关于c# - 如何从Azure ActiveDirectory应用程序获取当前 token ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23962472/

10-11 15:20