我需要使用 Python 脚本通过客户端凭据身份验证流程将文件上传到 SharePoint Online 网站。我是租户管理员,并尝试授予仅应用程序访问权限(如此处所述),以及通过 Azure AD,在这两种情况下都授予完整的站点权限。对于 Azure AD,我尝试通过 MS Graph API 以及 SharePoint API 进行授权。在这两种情况下,我都可以进行身份验证,但无法授权访问 SharePoint 网站。
我能够生成显示 Sites.FullControl.All 访问权限的承载访问令牌。但是,我要么得到Unsupported app only token(在使用 Azure AD 应用程序注册中的 client_id/secret 的情况下),要么 ID3035: The request was not valid or is malformed(在通过 SharePoint 管理界面从仅应用程序注册中使用 client_id/secret 的情况下)。
我还尝试通过 进行授权Office365-Rest-Python-Client,该授权会进行授权,但在尝试访问任何站点资源时会返回 401。
我在文档中发现了一些证据,表明可能需要获取刷新令牌,这可能需要自签名证书,但我已经陷入了很多兔子洞,我想我应该在这里寻求任何潜在的见解。
最重要的是,我只需要运行一个每天将文件上传到 SharePoint 网站的脚本,无需任何用户交互。
sharepoint sharepoint-api sharepoint-online azure-ad-graph-api microsoft-graph-api
因此,我正在尝试在azure AD上设置一个可以删除用户的应用程序。
我已经注册了该应用程序,并使用客户端ID和安全证书来获取访问令牌。
我能够授予应用程序创建用户的权限,并且工作正常,但是当我删除图形API时,我获得403权限不足,无法完成操作。
我正在通过图其余API尝试此操作。我尝试删除的用户也是通过rest调用创建的。用户与应用程序位于同一租户中,因此我不尝试从多个租户中删除用户。
看来我需要做的是给予应用程序“全局管理员”或“公司管理员”权限,但是我正在研究在何处以及如何执行此操作。
任何帮助,将不胜感激。
azure azure-active-directory azure-ad-graph-api azure-ad-b2c
我想要做的是使用Microsoft 本文中描述的"Web API代表流"方案来创建Web挂钩.
所以我从Microsoft github示例开始,确保我可以通过Graph API成功获取用户配置文件.
然后我修改了获取用户配置文件的代码来创建Web挂钩,因此代码如下所示:
// Authentication and get the access token on behalf of a WPF desktop app.
// This part is unmodified from the sample project except for readability.
const string authority = "https://login.microsoftonline.com/mycompany.com";
const string resource = "https://graph.windows.net";
const string clientId = "my_client_id";
const string clientSecret = "my_client_secret";
const string assertionType = "urn:ietf:params:oauth:grant-type:jwt-bearer";
var user = ClaimsPrincipal.Current.FindFirst(ClaimTypes.NameIdentifier).Value;
var authenticationContext = new AuthenticationContext(authority,new DbTokenCache(user));
var assertion = ((BootstrapContext) ClaimsPrincipal.Current.Identities.First().BootstrapContext).Token;
var userName = ClaimsPrincipal.Current.FindFirst(ClaimTypes.Upn) …Run Code Online (Sandbox Code Playgroud) azure webhooks azure-active-directory azure-ad-graph-api microsoft-graph
您好,我正在尝试使用 Graph api(最近更新)获取 Microsoft 团队的频道,如下所示
var settings = {
"async": true,
"crossDomain": true,
"url": "https://graph.microsoft.com/beta/groups/f389913f-b38d-4784-a37c-9ae3259275dc/channels",
"method": "GET",
"headers": {
"authorization": "token`enter code here`",
"cache-control": "no-cache",
"postman-token": "f4e5037c-913a-bc76-10a2-a0adb9064c11"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误。
{
"error": {
"code": "AccessDenied",
"message": "Failed to execute Skype backend request GetThreadRequest. Request Url: https://apac-client-ss.msg.skype.com/v1/threads/19:88b4b1fa52214b7fbb3fd8d10bd37cea@thread.skype?view=msnp24Equivalent, Request Method: GET,. The server failed to respond correctly. Response Code: Forbidden, Reason: SkypeToken is from a disallowed region.. Response Headers: Pragma: no-cache\r\nContextId: tcid=7407026678545725096,server=EAP010230200016\r\nCache-Control: no-store, must-revalidate, no-cache\r\nDate: Fri, 12 …Run Code Online (Sandbox Code Playgroud) graph azure azure-ad-graph-api microsoft-teams microsoft-graph-api
我一直在使用以下代码示例来测试从 Java 应用程序对 Microsoft Graph API 的访问:
https://azure.microsoft.com/en-au/resources/samples/active-directory-java-webapp-openidconnect/
在我的 Azure 门户中,我在 Azure Active Directory 下创建了一个注册应用程序。我已经进入API Access > Required Permissions并添加Microsoft Graph并检查了所有应用程序权限和委派权限。
当我尝试调用示例应用程序的“显示租户中的用户”功能时,我从 Microsoft 登录过程中收到以下错误消息:
AADSTS65005:资源无效。客户端请求访问未在客户端应用程序注册中请求的权限中列出的资源。客户端应用程序 ID:1b350134-84b1-4ca1-a181-03e3699996a1。请求中的资源值: https: //graph.windows.net。资源应用程序 ID:00000002-0000-0000-c000-000000000000。应用程序注册的有效资源列表:00000003-0000-0000-c000-000000000000。
谁能建议如何从这里继续?
active-directory azure azure-ad-graph-api microsoft-graph-api
我正在寻找 AZURE AD Graph API 来检查用户是否被锁定,如果被锁定,我需要使用 Graph API 解锁该特定用户。
此外,我已经验证了下面提到的 AZURE AD Graph API 目录,但我无法找到与之相关的任何内容。
https://msdn.microsoft.com/en-us/library/azure/ad/graph/api/api-catalog
我正在使用AzureAd Powershell 模块进行用户管理。但是,它没有我需要的所有功能,特别是,我无法将应用程序扩展值分配给对象(尽管我可以通过创建删除和删除应用程序扩展本身[Get/New/Remove]-AzureADApplicationExtensionProperty)。
通过使用Fiddler观察 API 调用,我知道图形调用正在使用不记名令牌,并且我已直接从 Postman 手动调用图形 API,因此我知道如何使用不记名令牌(如果可以获得)。我怎样才能得到它?
我希望使用 Azure AD 作为我的身份验证系统,但不想将我的用户退回到 Microsoft 登录页面,因为它具有破坏性,而且用户可能拥有或没有个人帐户和/或工作帐户的事实似乎使它非常混乱对于大多数。
在过去的几天里,我对此进行了大量研究,但只找到了向我展示 .NET、Azure Graph 和 Microsoft Graph API 中的 AAD 库的资源。所有这些似乎都是通过 Microsoft 登录窗口执行 oAuth 的复杂系统。
我正在使用 Golang,但我是 .NET 中的 MSCA。如果 .net 中的源代码引用不需要专有/封闭源 DLL 文件,我可以将其用作起点,否则,如果有一些参考点可能显示如何使用 MS Graph API 发送用户名和密码(在我的网站上输入)并收到一些肯定或否定的响应,表明所提供的凭据是否与我的 Azure AD 中的帐户匹配会很好。
例如,我知道使用https://msdn.microsoft.com/en-us/library/azure/ad/graph/api/users-operations来创建、获取、列出、更新和删除用户。但它似乎没有验证或授权程序(当然,除非我只是错过了它)。
我的问题是,有没有一种方法可以在不使用 oAuth 的情况下通过 Microsoft 帐户登录来验证凭据?如果是这样,有人可以提供参考和/或一些伪代码来让我朝着正确的方向前进吗?提前致谢!
go azure-active-directory azure-ad-graph-api microsoft-graph-api
这两种api有什么区别?
我有一个Outlook加载项,该加载项从OfficeJS捕获ItemID,并将其传递回快递服务器,该服务器通过Graph API转发端点转发消息。
通常,我得到的ItemID类似于Graph API正确转发的内容:
AQMkADAwATNiZmYAZC1mZDMyLTJjODAtMDACLTAwCgBGAAAD6HpLXdIWSkydFpIOnccszQcAa+WVq3+CfU+sUUEjYH6kNXXXXXXa+WVq3+CfU+sUUEjYH6kNAAAANor+k8AAAA=
我遇到的问题是,在某些情况下,我会得到一个这样的ItemID:
AQMkADAwATM0MDAAMS1hYzNiLWY1MjAtMDACLTAwCgBGAAADt9wSOQ+Jc0urM7fl9yLPMwcAKzExAL5p8QNFrnWOneViFEwXXXXXXCsxMQC+afEDRa51jp3lYhRMAAHjntX/AAAA
注意/尾随前的权利AAAA。
因此,我然后对URI组件进行编码并触发以下请求:
https://graph.microsoft.com/v1.0/me/messages/AQMkADAwATM0MDAAMS1hYzNiLWY1MjAtMDACLTAwCgBGAAADt9wSOQ%2BJc0urM7fl9yLPMwcAKzExAL5p8QNFrnWOneViFEwXXXXXXCsxMQC%2BafEDRa51jp3lYhRMAAHjntX%2FAAAA/forward
Run Code Online (Sandbox Code Playgroud)
我得到这个回应:
"error":{
"code":"BadRequest",
"message":"Unsupported segment type. ODataQuery: users/rando@outlook.com/messages/AQMkADAwATM0MDAAMS1hYzNiLWY1MjAtMDACLTAwCgBGAAADt9wSOQ+Jc0urM7fl9yLPMwcAKzExAL5p8QNFrnWOneViFEwXXXXXXCsxMQC+afEDRa51jp3lYhRMAAHjntX/AAAA/forward",
"innerError":{
"request-id":"6b3a8b34-4474-4260-98d4-107b1dfd4cc4",
"date":"2017-08-04T18:02:10"
}
}
Run Code Online (Sandbox Code Playgroud)
有没有人遇到这个问题或知道解决方案?当/ItemId中包含a时,这似乎在Microsoft端可能是一个问题。
注意:对发布的用户和ItemIds进行了一些清洁。
我已经提出了刷新令牌撤销问题,它会在 1-5 分钟后起作用。
但它仅适用于内置策略(用户流),不适用于自定义策略。
我从内置策略中获得了refresh_token A,从自定义策略中获得了refresh_token B。
同一租户中的同一用户会收到这两个令牌。
执行撤销(Graph API)后,当我尝试使用refresh_token A获取新的访问和刷新令牌时,它失败了。但是当我尝试使用refresh_token B(通过自定义策略接收)时,它仍然有效。能够获得新的代币。
我在撤销呼叫后给了 15 分钟的时间间隔。
请帮我解决这个问题。
在我的项目中,我在 Net Core 3.0 项目中使用 Microsoft Graph Api 连接到 Azure Intune 并添加组和用户。添加包含成员的组时,图形 API 需要用户的 json 表示,如下所示(文档):
var group = new Group
{
// other properties omitted
AdditionalData = new Dictionary<string, object>()
{
{"owners@odata.bind", "[\"https://graph.microsoft.com/v1.0/users/26be1845-4119-4801-a799-aea79d09f1a2\"]"},
{"members@odata.bind", "[\"https://graph.microsoft.com/v1.0/users/ff7cb387-6688-423c-8188-3da9532a73cc\",\"https://graph.microsoft.com/v1.0/users/69456242-0067-49d3-ba96-9de6f2728e14\"]"}
}
};
Run Code Online (Sandbox Code Playgroud)
简要编辑: 我从文档中尝试了上面的代码,用我想要添加的用户替换了 Guid,但这也不起作用,给我同样的错误消息。 结束编辑。
如何在字典中动态添加成员,例如从用户 ID 数组中添加成员?他们似乎使用转义字符,并且使用JsonConvert.SerializeObject(arrayObjectWithIds)似乎不起作用,因为我从 Graph Api 得到了一个格式不正确的 OData 字段:Invalid URL format specified in @odata.bind for members
我拥有的:
string[] memberIds = new string[] { "https://graph.microsoft.com/v1.0/users/123", "https://graph.microsoft.com/v1.0/users/456", "https://graph.microsoft.com/v1.0/users/789" };
string json = JsonConvert.SerializeObject(memberIds);
newGroup.AdditionalData = new …Run Code Online (Sandbox Code Playgroud) c# odata asp.net-core-mvc azure-ad-graph-api microsoft-graph-api
azure ×4
azure-ad-b2c ×2
c# ×1
go ×1
graph ×1
odata ×1
office-js ×1
powershell ×1
sharepoint ×1
webhooks ×1