【问题标题】:ASP.NET MVC 5 Sending an Email with Federated Authentication Azure ADASP.NET MVC 5 使用联合身份验证发送电子邮件 Azure AD
【发布时间】:2014-04-17 05:14:47
【问题描述】:

我花了好几个小时试图解决这个问题,希望有人能提供帮助。用户使用 Azure AD(Microsoft 组织帐户)向我们的 ASP.NET 站点进行身份验证。理想情况下,我希望能够与 Exchange Web 服务连接,但我无法弄清楚如何传递凭据。通过搜索,我发现无法从 User.Identity 获取密码。

我在使用 Pop 或 IMAP 时遇到了同样的问题。

此代码返回“无法定位自动发现服务” 如果我明确告诉它服务器名称,我会收到 401 Unauthorized Error

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2013_SP1);
service.UseDefaultCredentials = true;
service.AutodiscoverUrl(User.Identity.Name, RedirectionUrlValidationCallback);

        private static bool RedirectionUrlValidationCallback(string redirectionUrl)
        {
            // The default for the validation callback is to reject the URL.
            bool result = false;

            Uri redirectionUri = new Uri(redirectionUrl);

            // Validate the contents of the redirection URL. In this simple validation
            // callback, the redirection URL is considered valid if it is using HTTPS
            // to encrypt the authentication credentials. 
            if (redirectionUri.Scheme == "https")
            {
                result = true;
            }
            return result;
        }

【问题讨论】:

    标签: asp.net-mvc-5 exchangewebservices federated-identity azure-active-directory


    【解决方案1】:

    您的应用程序无权访问用户的凭据。这是联合身份验证的前提。 Azure AD 对用户进行身份验证并颁发 SAML/JWT 令牌,您的应用程序将验证该令牌并登录用户(底层身份框架可能正在为您完成这项工作)。

    也就是说,您的应用程序可以从 Azure AD 获取委托令牌,以代表登录用户访问 Office365 API,并代表他们向日历发送电子邮件/写入。以下文档将逐步指导您(包括 Visual Studio 示例):http://msdn.microsoft.com/en-us/library/office/dn605893(v=office.15).aspx

    更新链接: https://msdn.microsoft.com/en-us/office/office365/howto/starter-projects-and-code-samples

    用户体验类似于:用户点击您应用程序上的登录按钮。你的应用程序确定用户需要在 Azure AD 上登录,并使用 SSO+委派令牌请求将用户的代理重定向到 Azure AD。用户会看到一个“同意”页面,上面写着:应用程序想要代表您访问您的电子邮件。用户同意并登录。AAD 将用户的代理重定向回您的应用程序,其中包含一个 id 令牌(针对 SSO 发送给您的应用程序)和一个您的应用程序可以兑换访问令牌的授权代码(发送给 Exchange Online)发送电子邮件。

    希望这会有所帮助。

    【讨论】:

    猜你喜欢
    • 2015-03-21
    • 1970-01-01
    • 2015-05-15
    • 2011-06-18
    • 2015-11-23
    • 1970-01-01
    • 2018-08-07
    • 1970-01-01
    • 2023-04-03
    相关资源
    最近更新 更多