如何通过AzureAD平台提供的授权方式访问sharepoint online
官方文档:
1.https://docs.microsoft.com/zh-cn/previous-versions/azure/dn645543(v=azure.100)?redirectedfrom=MSDN
2.https://docs.microsoft.com/zh-cn/previous-versions/azure/dn645545%28v%3dazure.100%29
AzureAD的简单介绍:Azure Active Directory(Azure AD)使用OAuth 2.0使您能够授权对Azure AD租户中的Web应用程序和Web API的访问。 OAuth 2.0的Azure AD实施符合OAuth 2.0 RFC 6749,并已扩展为保护第三方Web API。此设计使您可以将AAD用作开发的Web应用程序和Web API的完整安全平台。
上个本篇要用到的图:

在开始之前需要拥有一个AzureAD,我申请的是Office365的开发者账号,其中包括Sharepoint online和AzureAD的订阅。在AzureAD上注册一个客户端app,按上文提到的我们通过这个app来访问SharePoint online。
1.首先我们进入AzureAD注册一个app

2.填入name,选择app的访问账户类型和app类型。我们用户选择第三种,app选择web ,以及一个访问时返回的url。

3.这是创建之后的app基础信息(很重要的信息)。

通过上面的步骤,我们成功注册了一个应用程序。
之后我们通过使用用户名密码或者用户名证书这两种方式来获取Token。
1.在上面步骤我们只是申请了一个app,接下来需要一个密码(密码需要保存,创建之后会隐藏)。申请步骤如下


条件满足上代码,token即在AuthenticationResult对象中:
public async static Task<AuthenticationResult> AcquireTokenAsync(string resource, string tenantId,string clientId,string clientSecret)
{
if(string.IsNullOrEmpty(resource) || string.IsNullOrEmpty(tenantId) || string.IsNullOrEmpty(clientId) || string.IsNullOrEmpty(clientSecret))
{
throw new Exception("The parameters can not be null or empty");
}
AuthenticationContext authenticationContext = new AuthenticationContext($"https://login.microsoftonline.com/{tenantId}");
ClientCredential clientCredential = new ClientCredential(clientId, clientSecret);
AuthenticationResult authenticationResult = await authenticationContext.AcquireTokenAsync(resource, clientCredential);
return authenticationResult;
}
2.第二种方式是通过证书的方式获取token,首先准备证书,先自制一个安装在本地。

打开mmc,证书位置

接着我们导出一个cer证书和一个带密码的pfx证书。接下来我们要用到powershell来生成证书凭证,红框中是我们需要更新到AzureAD上的。

下载app manifest将拷贝的keyCredentials内容复制进去再重新上传(或者通过powershell的方式实现更新不需要下载再上传)。

更新之后如下:

最后的一步,需要给这个app赋予权限,按自己需求分配:



另外需要获取租户管理员的承认

条件满足上代码:
public async static Task<AuthenticationResult> AcquireTokenAsync(string resource, string tenantId,string clientId,string certficatePath,string certificatePassword)
{
if (string.IsNullOrEmpty(resource) || string.IsNullOrEmpty(tenantId) || string.IsNullOrEmpty(clientId) || string.IsNullOrEmpty(certficatePath))
{
throw new Exception("The parameters can not be null or empty");
}
X509Certificate2 certificate = new X509Certificate2(certficatePath, certificatePassword, X509KeyStorageFlags.MachineKeySet);
string authority = $"https://login.windows.net/{tenantId}";
AuthenticationContext authenticationContext = new AuthenticationContext(authority, false);
ClientAssertionCertificate cac = new ClientAssertionCertificate(clientId, certificate);
AuthenticationResult authenticationResult = await authenticationContext.AcquireTokenAsync(resource, cac);
return authenticationResult;
}
AzureAD提供了如下多种方法去获取token,上面只是简单测试了其中的两种,原理大致相同。token获取的步骤是通用的,不仅仅是SharePoint online,也可以是office365下的各个产品或者任何一个应用程序或者一个api,都它可以通过AzureAD来管理授权。

如何通过AzureAD平台提供的授权方式访问sharepoint online的更多相关文章
- 【.NET Core项目实战-统一认证平台】第十四章 授权篇-自定义授权方式
[.NET Core项目实战-统一认证平台]开篇及目录索引 上篇文章我介绍了如何强制令牌过期的实现,相信大家对IdentityServer4的验证流程有了更深的了解,本篇我将介绍如何使用自定义的授权方 ...
- 项目一:第十二天 1、常见权限控制方式 2、基于shiro提供url拦截方式验证权限 3、在realm中授权 5、总结验证权限方式(四种) 6、用户注销7、基于treegrid实现菜单展示
1 课程计划 1. 常见权限控制方式 2. 基于shiro提供url拦截方式验证权限 3. 在realm中授权 4. 基于shiro提供注解方式验证权限 5. 总结验证权限方式(四种) 6. 用户注销 ...
- [转]OAuth 2.0 - Authorization Code授权方式详解
本文转自:http://www.cnblogs.com/highend/archive/2012/07/06/oautn2_authorization_code.html I:OAuth 2.0 开发 ...
- OAuth 2.0 - Authorization Code授权方式详解
I:OAuth 2.0 开发前期准备 天上不会自然掉馅饼让你轻松地去访问到人家资源服务器里面的用户数据资源,所以你需要做的前期开发准备工作就是把AppKey, AppSecret取到手 新浪获取传送门 ...
- .NET Core中 实现H5微信登录(静默授权方式)
需求 假设现在有一个H5需要有微信登录.手机号登录.邮箱登录 三种登录方式.让我们一起来看看微信登录如何实现吧 界面: 最终实现的效果图(登录成功后返回个人页): 因为微信登录目前没有实现移动端的其他 ...
- OAuth 2.0 授权方式讲解,规范实践和应用
基于实践说规范 网上看了一些OAuth 2.0的授权方法,尽管讲解的没有什么逻辑性错误,但是存在一个问题,那就是单纯的讲解协议规范却脱离了实际的应用,缺少干货,所以才有了这篇文章,内容基于实际业务进行 ...
- OAuth2.0学习(1-7)授权方式4-客户端模式(Client Credentials Grant)
授权方式4-客户端模式(Client Credentials Grant) 客户端模式(Client Credentials Grant)指客户端以自己的名义,而不是以用户的名义,向"服务提 ...
- OAuth2.0学习(1-6)授权方式3-密码模式(Resource Owner Password Credentials Grant)
授权方式3-密码模式(Resource Owner Password Credentials Grant) 密码模式(Resource Owner Password Credentials Grant ...
- OAuth2.0学习(1-5)授权方式2-简化模式(implicit grant type)
授权方式2-简化模式(implicit grant type) 简化模式(implicit grant type)不通过第三方应用程序的服务器,直接在浏览器中向认证服务器申请令牌,跳过了"授 ...
随机推荐
- python 调用ldap同步密码
windows + python2.7 安装 python-ldap https://www.lfd.uci.edu/~gohlke/pythonlibs/#python-ldap 2.python ...
- hdu2665可持久化线段树,求区间第K大
Kth number Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- CF832D
题目链接:http://codeforces.com/contest/832/problem/D 题目大意:在一个无向图上,给出三个点,以其中一个点为终点,另外两个点为起点,请问如何安排起点和终点可以 ...
- J2EE项目分类管理中,提交表单数据是二进制形式时,对数据的修改失败。category赋值失败。
原因: 在条件判断时,对字符串的比较进行了错误比较. 解决方法: A==B,比较的是两个字符串是否是同一个对象. A.equal(B),比较的是两个字符串内容是否相同. 出现错误是用了第一种比较,应该 ...
- .net core HttpClient 使用之消息管道解析(二)
一.前言 前面分享了 .net core HttpClient 使用之掉坑解析(一),今天来分享自定义消息处理HttpMessageHandler和PrimaryHttpMessageHandler ...
- Verilog代码和FPGA硬件的映射关系(二)
大家可能会有这样的疑问,我们编写的Verilog代码最终会在FPGA上以怎样的映射关系来实现功能呢?我们以一个最简单的组合逻辑与门为例来向大家说明.RTL代码如下所示: //------------- ...
- h5中嵌入视频自动播放的问题
在H5页面中嵌入视频的情况是比较多件的,有时候会碰到需要自动播放的情况,之前根本觉得这不是问题,但是自己的项目中需要视频的时候就有点sb了,达不到老板的要求,那个急呀~~~ 各种查资料,找到一个方法, ...
- .NET Core 反射获取所有控制器及方法上特定标签
.NET Core 反射获取所有控制器及方法上特定标签 有个需求,就是在. NET Core中,我们想在项目 启动时,获取LinCmsAuthorizeAttribute这个特性标签所有出现的地方,把 ...
- 微信小程序订阅
微信小程序订阅 摘要 1.基于promise封装微信小程序订阅 2.解决由于微信基础库版本低下的兼容 3.解决“总是保持以上选择,不再询问”的取消状态 主要运用API: requestSubscrib ...
- 【算法】Tarjan算法求强连通分量
概念: 在有向图G中,如果两个定点u可以到达v,并且v也可以到达u,那么我们称这两个定点强连通. 如果有向图G的任意两个顶点都是强连通的,那么我们称G是一个强连通图. 一个有向图中的最大强连通子图,称 ...