JWT CSOM/REST Azure Active Directory
我们一直在尝试使用带令牌的CSOM/REST身份验证承载头请求向Sharepoint发出请求。它与下面这个问题:JWT CSOM/REST Azure Active Directory
C# CSOM Sharepoint Bearer request from azure active directory
只有一个链接/例如,工程所有其他包括Android ADAL方法不起作用。
https://samlman.wordpress.com/2015/02/27/using-adal-access-tokens-with-o365-rest-apis-and-csom/
他们似乎并不长返回一个道理,当我们看看JWT解析器的道理,我们可以看到,SCP值是不同的,失败的人有user_impersonate,但工作人员有AllSites.Manage AllSites.Read AllSites.Write MyFiles.Read MyFiles.Write。 aud url也是不同的,是这些问题中的一个还是两个,以及如何使它工作?
这是失败的:
{
"aud": "https://srmukdev.onmicrosoft.com/3Squared-Api-Test",
"iss": "...",
"iat": ...,
"nbf": ...,
"exp": ..,
"acr": "...",
"aio": "...",
"amr": [
"pwd",
"mfa"
],
"appid": "...",
"appidacr": "0",
"e_exp": ...,
"family_name": "...",
"given_name": "...",
"ipaddr": "...",
"name": "...",
"oid": "...",
"onprem_sid": "...",
"platf": "3",
"scp": "user_impersonation",
"sub": "...",
"tid": "...",
"unique_name": "...",
"upn": "...",
"ver": "1.0"
}
这是工作的那些:
{
"aud": "https://srmukdev.sharepoint.com/",
"iss": "...",
"iat": ...,
"nbf": ...,
"exp": ...,
"acr": "...",
"aio": "...",
"amr": [
"pwd",
"mfa"
],
"app_displayname": "...",
"appid": "...",
"appidacr": "0",
"e_exp": ...,
"family_name": "...",
"given_name": "...",
"ipaddr": "...",
"name": "...",
"oid": "...",
"onprem_sid": "...",
"platf": "3",
"puid": "...",
"scp": "AllSites.Manage AllSites.Read AllSites.Write MyFiles.Read MyFiles.Write",
"sub": "...",
"tid": "...",
"unique_name": "...",
"upn": "...",
"ver": "1.0"
}
的访问令牌是通过检查其aud
要求的特定资源。第一个令牌用于对您的自定义资源进行身份验证。
要获取特定资源的标记,我们可以使用参数resource
来指定我们要为标记请求哪个资源。例如,如果我想获得的微软图形资源令牌,我们可以构造请求如下图所示:
POST /{tenant}/oauth2/token HTTP/1.1
Host: https://login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code
&client_id=2d4d11a2-f814-46a7-890a-274a72a7309e
&code=AwABAAAAvPM1KaPlrEqdFSBzjqfTGBCmLdgfSTLEMPGYuNHSUYBrqqf_ZT_p5uEAEJJ_nZ3UmphWygRNy2C3jJ239gV_DBnZ2syeg95Ki-374WHUP-i3yIhv5i-7KU2CEoPXwURQp6IVYMw-DjAOzn7C3JCu5wpngXmbZKtJdWmiBzHpcO2aICJPu1KvJrDLDP20chJBXzVYJtkfjviLNNW7l7Y3ydcHDsBRKZc3GuMQanmcghXPyoDg41g8XbwPudVh7uCmUponBQpIhbuffFP_tbV8SNzsPoFz9CLpBCZagJVXeqWoYMPe2dSsPiLO9Alf_YIe5zpi-zY4C3aLw5g9at35eZTfNd0gBRpR5ojkMIcZZ6IgAA
&redirect_uri=https%3A%2F%2Flocalhost%2Fmyapp%2F
&resource=https%3A%2F%2Fservice.contoso.com%2F
&[email protected]
如果你想获得访问令牌https://srmukdev.sharepoint.com/
,您需要分配的resource
值根据您使用的流程在请求中输入https://srmukdev.sharepoint.com/
。
关于流动Azure的AD支持,以获得访问令牌的更多细节,你可以参考以下链接:
嗨薛飞,是的,这是问题,资源名称是什么需要改变。我现在可以使用不记名令牌获得访问权限,似乎无法使用GetUserProfilePropertiesFor方法获取用户用户配置文件属性,但会引发另一个问题。非常感谢 – Andrew