Asp.net mvc Azure Active Directory和单点登录的访问令牌

Asp.net mvc Azure Active Directory和单点登录的访问令牌,asp.net-mvc,azure-active-directory,access-token,azure-ad-graph-api,Asp.net Mvc,Azure Active Directory,Access Token,Azure Ad Graph Api,我已经在stackoverflow上浏览了这个链接,也在GitHub上浏览了多个示例。让我解释一下情况 我有一个带有专用登录名的ASP.NET MVC web应用程序,但客户端要求我与Azure Active Directory混合,所以我可以这样做,方法是在Start\u up.cs文件中添加代码(我根本不验证安全令牌和授权令牌。我需要吗?) 我确实使用 [Authorize] 在我的控制器中,确保请求经过身份验证并重定向到正确的视图 但是,我的客户特别要求启用基于令牌的访问。我正试图使用

我已经在stackoverflow上浏览了这个链接,也在GitHub上浏览了多个示例。让我解释一下情况

我有一个带有专用登录名的ASP.NET MVC web应用程序,但客户端要求我与Azure Active Directory混合,所以我可以这样做,方法是在
Start\u up.cs
文件中添加代码(我根本不验证
安全令牌和授权令牌。我需要吗?)

我确实使用

[Authorize] 
在我的控制器中,确保请求经过身份验证并重定向到正确的视图

但是,我的客户特别要求启用基于令牌的访问。我正试图使用GraphAPI教程来实现同样的目的

在这里,我是否使用正确的方法来获取access_令牌,使用Graph API并在下面添加此类代码(仅供参考)

我是否需要使用任何其他方式来获取访问权令牌(我看到很多使用授权类型等的示例,但这让我更加困惑) access_令牌真的适合这种情况吗


注意:这听起来可能是一个愚蠢的问题,但现在是时候了,我必须澄清这一困惑。

在OpenID Connect中,用户经过身份验证,可以通过基于cookie的身份验证进行SSO。身份验证完成并将代表用户的令牌发送到应用程序后,OWIN中间件将创建会话cookie。浏览器随后在后续请求中使用此cookie,因此用户无需重新键入密码,也无需额外验证

从您描述的内容来看,您似乎正在启用基于令牌的身份验证,并且应该满足客户的要求

有关其他文档,请参阅此存储库:

[Authorize] 
 AuthorizationCodeReceived = async (context) =>
   {
      var code = context.Code;

      ClientCredential credential = new ClientCredential(clientId, appKey);
      string tenantID = context.AuthenticationTicket.Identity.FindFirst("http://schemas.microsoft.com/identity/claims/tenantid").Value;
      string signedInUserID = context.AuthenticationTicket.Identity.FindFirst(ClaimTypes.NameIdentifier).Value;


      AuthenticationContext authContext = new AuthenticationContext(string.Format("https://login.microsoftonline.com/{0}", tenantID), new EFADALTokenCache(signedInUserID));
      AuthenticationResult result = await authContext.AcquireTokenByAuthorizationCodeAsync(
                            code, new Uri(HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Path)), credential, graphResourceID);
      if(result!=null)
      {
         Console.WriteLine("access code received");
      }
  },
  SecurityTokenValidated = (context) =>
  {
     return Task.FromResult(0);
  }