Asp.net mvc Azure Active Directory和单点登录的访问令牌
我已经在stackoverflow上浏览了这个链接,也在GitHub上浏览了多个示例。让我解释一下情况 我有一个带有专用登录名的ASP.NET MVC web应用程序,但客户端要求我与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] 在我的控制器中,确保请求经过身份验证并重定向到正确的视图 但是,我的客户特别要求启用基于令牌的访问。我正试图使用
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);
}