Asp.Net身份验证与Office365应用程序
本文关键字:Office365 应用程序 身份验证 Net Asp | 更新日期: 2023-09-27 18:08:40
我想知道是否有一种方法可以同时使用Owin
和Office 365 Owin
登录的Asp.Net Identity
?
基本上我想创建一个web钩子挂钩到用户的Exchange收件箱。当这些消息到达时,我需要做一些处理,并发送一个通知。
我能够成功创建一个Office 365应用程序;我有clientId
和clientSecret
都进入我的Web.Config
文件。
我使用Asp。Net MVC5,我可以有一个视图,基本上有一个按钮,它说"点击订阅"…这将理想的打开Office 365登录,我的用户将看到一份同意书。
虽然当用户最初登录到网站时,我使用Owin与Asp。净的身份。
当我试图方便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()
来终止验证管道,这将停止OpenIDConnect登录管道并离开ASP。. NET身份完整。 - 你可以自己制作一个OAuth请求,而不用使用OWIN管道来触发&捕获请求/响应。这个示例向您展示了如何使用ADAL库实现这一点。我推荐这种方法,它更直接。