SharePoint Online的外部REST服务身份验证

时间:2016-05-30 14:50:48

标签: azure authentication sharepoint office365 adal

通常使用SharePoint Online创建复杂的业务应用程序,我需要将业务逻辑外部化为外部服务,以便使用.net代码和第三方程序集。

就我而言,我正在开发一个由Azure网站托管的Rest服务。

Here my architecture

我的问题是:

我是否可以从SharePoint获取包含当前用户信息的访问令牌,将其传递给外部Rest服务,然后重复使用它以使用当前用户凭据返回和验证用户到SharePoint?

此服务从两个JavaScript代码都调用2013工作流程

你能给我一些关于它的文件吗?

谢谢,

塞尔吉奥

1 个答案:

答案 0 :(得分:0)

  
    

SharePoint Online的外部REST服务身份验证...此服务从两个JavaScript代码中调用2013工作流程

  

默认情况下,SharePoint在线受Azure AD保护。根据描述,有两种认证方案。首先,您希望在线登录S​​harePoint后无需身份验证即可调用自定义REST服务。 第二,您可以通过使用SharePoint在线用户的凭据进行令牌交换来调用REST服务。

在第一个场景中,我们可以集成Open Connect ID来验证REST服务。在第二种方案中,我们可以使用OAuth 2.0来集成Azure AD。

以下是演示解决方案的主要步骤:

  1. 在Azure AD上注册Web应用

  2. 创建MVC和Web API项目

  3. 添加以下代码以使用Open connect ID和OAuth 2.0 ConfigureAuth(IAppBuilder app)方法(Startup.Auth.cs)

    app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
    
    app.UseCookieAuthentication(new CookieAuthenticationOptions());
    
    app.UseOpenIdConnectAuthentication(
        new OpenIdConnectAuthenticationOptions
        {
            ClientId = "5efa8abc-13dc-4681-83f5-c6fde07116ac",
            Authority = "https://login.windows.net/yourtenant.onmicrosoft.com",
            PostLogoutRedirectUri = "http://localhost:24865/",
        });
    
        app.UseWindowsAzureActiveDirectoryBearerAuthentication(new WindowsAzureActiveDirectoryBearerAuthenticationOptions
        {
                Audience = "https://yourtenant-my.sharepoint.com/",
                Tenant = "yourtenant.onmicrosoft.com"
        });
    
  4. 您可以参考以下链接,了解有关Azure AD受保护资源的更多详细信息:

    Web App Sign In & Sign Out with Azure AD

    Protect a Web API using Bearer tokens from Azure AD