Skype For Business Online 身份验证错误 - 403 权限被拒绝
Skype For Business Online Authentication Error - 403 Permission Denied
您好Microsoft/Azure/Skype专家,
我的任务是从我的 macOS 应用程序(本机)访问来自 Skype For Business Online 帐户的状态数据。
不幸的是,我被卡住了,当我访问自动发现请求时,我总是收到 403 错误,并且从未获得 link 到应用程序资源
我一直在关注这个文档
https://docs.microsoft.com/en-us/skype-sdk/ucwa/authenticationusingazuread
第 1 步
我们已使用我们的 Office 365 帐户凭据在 Azure 管理门户中注册了该应用程序。
- 我们使用了客户重定向 URL (http://localhost)
- 允许隐式流在清单中设置为 true
- 我们预先配置了 Skype for business 所需的权限
在线的
第 2 步
发出文档中指定的 GET 以启动登录和授权检查。
这 return 是 200 OK。
第 3 步
我们得到了文档中描述的 Auto discover URL。
这就是我得到的 - 我使用标有红色的域。
第 4 步
根据文档,他们要求我这样做
使用隐式授权流请求访问令牌
所以我按照描述发出 GET
https://login.microsoftonline.com/oauth2/authorize?
response_type=id_token &client_id=######-4d41-485e-871f-0a22aa79e52b
&redirect_uri=http://localhost
&state=8f0f4eff-360f-4c50-acf0-99cf8174a58b
&resource=https://webdirin1.online.lync.com
现在这显示了登录页面,我登录然后它抛出一个错误
AADSTS90014%3a+The+required+field+%27nonce%27+is+missing.
我研究过但无法修复此错误。
因此,经过大量研究并查看此 Microsoft 文档 LINK (https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-permissions-and-consent#requesting-individual-user-consent) ,显然还有另一种获取不记名令牌的方法。
第 4 步 - 第二次尝试
然后我通过发送 Skype for Business 的 SCOPE 参数请求个人用户同意。
然后我向
发出 GET 请求
此 return 是我在下一步中用于获取令牌的访问代码
第 5 步 - 获取承载令牌
向URL发出POST
https://login.microsoftonline.com/common/oauth2/v2.0/token 随着
POST body
中的以下数据
"grant_type": "authorization_code", "client_id":
"######-4d41-485e-871f-0a22aa79e52b", "scope":
"https://api.skypeforbusiness.com/User.ReadWrite", "code":
"OAQABAAIAAACEfexX.........", "redirect_uri": "https://localhost"
这 return 是以下响应中的不记名令牌 JSON
{
"access_token" = "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1........w4b-- gnWG_iOGtQ";
"expires_in" = 3599;
"ext_expires_in" = 3599;
scope = "https://api.skypeforbusiness.com/User.ReadWrite";
"token_type" = Bearer;
}
第 6 步
耶!在 laaast 获得了不记名令牌!
现在回到主要文档
https://docs.microsoft.com/en-us/skype-sdk/ucwa/authenticationusingazuread
以及我们这样做的地方 - 'Resending an autodiscovery request with the bearer token'
我们对
执行 GET 请求
https://webdirin1.online.lync.com/Autodiscover/AutodiscoverService.svc/root/oauth/user
现在这个,根据文档应该 return 这个 JSON
{
"_links":{
"self":
{"href":"https://webdirX.online.lync.com/Autodiscover/AutodiscoverService.svc/root/user"},
"applications":
{"href":"https://webpoolXY.infra.lync.com/ucwa/oauth/v1/applications"}
}
}
但我收到 403:权限被拒绝错误
<div class="content-container"><fieldset>
<h2>403 - Forbidden: Access is denied.</h2>
<h3>You do not have permission to view this directory or page
using the credentials that you supplied.</h3>
</fieldset></div>
所以我从来没有收到申请 url 我已经检查了清单、注册但我不知道为什么我会收到这个错误。
如有任何意见,我们将不胜感激。
对于第 4 步,您需要在 URL 中指定 nonce=somestring
。通常这应该是一个只使用一次的安全随机值。它可以包含任何值。
此外,您只是在请求一个 ID 令牌。设置 response_type=id_token+token
.
您好Microsoft/Azure/Skype专家,
我的任务是从我的 macOS 应用程序(本机)访问来自 Skype For Business Online 帐户的状态数据。 不幸的是,我被卡住了,当我访问自动发现请求时,我总是收到 403 错误,并且从未获得 link 到应用程序资源
我一直在关注这个文档 https://docs.microsoft.com/en-us/skype-sdk/ucwa/authenticationusingazuread
第 1 步 我们已使用我们的 Office 365 帐户凭据在 Azure 管理门户中注册了该应用程序。
- 我们使用了客户重定向 URL (http://localhost)
- 允许隐式流在清单中设置为 true
- 我们预先配置了 Skype for business 所需的权限
在线的
第 2 步 发出文档中指定的 GET 以启动登录和授权检查。
这 return 是 200 OK。
第 3 步
我们得到了文档中描述的 Auto discover URL。
这就是我得到的 - 我使用标有红色的域。
第 4 步 根据文档,他们要求我这样做
使用隐式授权流请求访问令牌 所以我按照描述发出 GET
https://login.microsoftonline.com/oauth2/authorize? response_type=id_token &client_id=######-4d41-485e-871f-0a22aa79e52b &redirect_uri=http://localhost &state=8f0f4eff-360f-4c50-acf0-99cf8174a58b &resource=https://webdirin1.online.lync.com
现在这显示了登录页面,我登录然后它抛出一个错误
AADSTS90014%3a+The+required+field+%27nonce%27+is+missing.
我研究过但无法修复此错误。 因此,经过大量研究并查看此 Microsoft 文档 LINK (https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-permissions-and-consent#requesting-individual-user-consent) ,显然还有另一种获取不记名令牌的方法。
第 4 步 - 第二次尝试
然后我通过发送 Skype for Business 的 SCOPE 参数请求个人用户同意。 然后我向
发出 GET 请求此 return 是我在下一步中用于获取令牌的访问代码
第 5 步 - 获取承载令牌
向URL发出POST https://login.microsoftonline.com/common/oauth2/v2.0/token 随着 POST body
中的以下数据"grant_type": "authorization_code", "client_id": "######-4d41-485e-871f-0a22aa79e52b", "scope": "https://api.skypeforbusiness.com/User.ReadWrite", "code": "OAQABAAIAAACEfexX.........", "redirect_uri": "https://localhost"
这 return 是以下响应中的不记名令牌 JSON
{
"access_token" = "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1........w4b-- gnWG_iOGtQ";
"expires_in" = 3599;
"ext_expires_in" = 3599;
scope = "https://api.skypeforbusiness.com/User.ReadWrite";
"token_type" = Bearer;
}
第 6 步
耶!在 laaast 获得了不记名令牌! 现在回到主要文档 https://docs.microsoft.com/en-us/skype-sdk/ucwa/authenticationusingazuread
以及我们这样做的地方 - 'Resending an autodiscovery request with the bearer token' 我们对
执行 GET 请求https://webdirin1.online.lync.com/Autodiscover/AutodiscoverService.svc/root/oauth/user
现在这个,根据文档应该 return 这个 JSON
{
"_links":{
"self":
{"href":"https://webdirX.online.lync.com/Autodiscover/AutodiscoverService.svc/root/user"},
"applications":
{"href":"https://webpoolXY.infra.lync.com/ucwa/oauth/v1/applications"}
}
}
但我收到 403:权限被拒绝错误
<div class="content-container"><fieldset>
<h2>403 - Forbidden: Access is denied.</h2>
<h3>You do not have permission to view this directory or page
using the credentials that you supplied.</h3>
</fieldset></div>
所以我从来没有收到申请 url 我已经检查了清单、注册但我不知道为什么我会收到这个错误。
如有任何意见,我们将不胜感激。
对于第 4 步,您需要在 URL 中指定 nonce=somestring
。通常这应该是一个只使用一次的安全随机值。它可以包含任何值。
此外,您只是在请求一个 ID 令牌。设置 response_type=id_token+token
.