2016-09-26 109 views
0

我想知道是否有方法可以同时使用Asp.Net IdentityOwinOffice 365 Owin登录?Asp.Net使用Office365应用程序的身份验证

基本上我想创建一个挂钩到用户的Exchange收件箱的web钩子。当这些消息到达时,我需要做一些处理并基本发出通知。

我能够成功创建Office 365应用程序;我将clientIdclientSecret都纳入我的Web.Config文件中。

我使用Asp.Net MVC5,我能有,基本上有一个按钮一个观点,它说“点击订阅” ..这将随后理想打开Office 365的登录名和我的用户将会以同意书形式呈现。

尽管当用户最初登录到网站时,我正在使用Owin与Asp.Net Identity。

当我尝试设置Office 365登录时;这两条线返回null。我遵循Github上的教程give here。因此,我可以使用Graph API挂接到Exchange邮箱。但我在同意书中遇到问题?有什么想法吗?

这些都是可疑的两行代码:

 var signInUserId = ClaimsPrincipal.Current.FindFirst(ClaimTypes.NameIdentifier).Value; 
     var userObjectId = ClaimsPrincipal.Current.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier").Value; 

signInUserId根据用户返回我回Asp.Net用户ID字段。我有一种感觉,我正在做一件完全愚蠢的事情,不完整的&。

回答

0

在这种情况下,你有两种方法来考虑。

  • 您可以设置OWIN使用OpenIDConnectAuthentication当用户点击订阅,您发出从您的应用程序一个Challenge。 OWIN将重定向用户登录,同意,然后返回到您的应用程序。然后,您可以使用中间件中可用的通知来捕获授权码,将其交换为访问令牌,并缓存令牌以备后用。 This code sample显示如何操作。关键是通过在通知中调用HandleResponse()来终止授权管道,这将停止OpenIDConnect登录管道并保留ASP.NET身份。
  • 您可以自己制作OAuth请求,而无需使用OWIN管道来触发&捕获请求/响应。 This sample向您展示了如何使用ADAL库进行操作。我推荐这种方法,它更直接一点。
相关问题