繁体   English   中英

使用Office365应用的Asp.Net身份验证

[英]Asp.Net Identity authentication with Office365 app

我想知道是否可以同时使用OwinOffice 365 Owin登录使用Asp.Net Identity

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

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

我使用的是Asp.Net MVC5,我可以看到一个基本上带有按钮的视图,并显示“单击订阅”。然后理想情况下将打开Office 365登录名,并向我的用户显示一个同意形成。

尽管当用户最初登录网站时,我使用的是带有Asp.Net Identity的Owin。

当我尝试简化Office 365登录时; 这两行都返回null 我已经按照Github上的教程进行操作了 因此,我可以使用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 UserId字段。 我感觉自己在做一些完全愚蠢和不完整的事情。

在这种情况下,您需要考虑两种方法。

  • 您可以将OWIN设置为使用OpenIDConnectAuthentication并且当用户单击“订阅”时,您将从应用程序中发出Challenge OWIN将重定向用户以登录,同意,然后返回到您的应用程序。 然后,您可以使用中间件中可用的通知来捕获授权代码,将其交换为访问令牌,并缓存令牌以备后用。 此代码示例显示了如何执行此操作。 关键是通过从通知中调用HandleResponse()来终止auth管道,这将停止OpenIDConnect登录管道,并保持ASP.NET身份完整。
  • 您可以自己编写OAuth请求,而无需使用OWIN管道来触发和捕获请求/响应。 本示例向您展示如何使用ADAL库来执行此操作。 我推荐这种方法,它更简单一些。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM