我正在尝试使用 Power Virtual Agent Chatbot 在 SharePoint 网站上配置 SSO。我们使用 Azure 进行身份验证和 SSO。
我已经在 Power Virtual Agent 社区发布了帮助实现这一目标的帖子。我收到了这样的回复:“我们确实通过使用 HttpContextAccessor 获取登录用户名并在 exchangeTokenAsync 下将其作为 loginHint 传递;这样做有效。”但不知道如何实现这一点.
我正在使用以下代码,并且能够获取当前 SharePoint 网站的当前登录用户名和电子邮件 ID。
<script>
ExecuteOrDelayUntilScriptLoaded(getCurrentUser, "sp.js");
//getCurrentUser();
var currentUser;
function getCurrentUser() {
console.log("Inside getCurrentUser");
var ctx = new SP.ClientContext.get_current();
var web = ctx.get_web();
currentUser = web.get_currentUser();
ctx.load(currentUser);
ctx.executeQueryAsync(onSuccess, onFailure);
}
function onSuccess() {
console.log("Get Title: " + currentUser.get_title()); // Domain\Account
console.log("Get Email: " + currentUser.get_email());
console.log("Get Name: " + currentUser.get_loginName());
}
function onFailure() {
console.log(
"Request failed" +
args.get_message() +
"\n" +
args.get_stackTrace()
);
}
function exchangeTokenAsync(resourceUri) {
let user = clientApplication.getAccount();
if (user) {
console.log("User exist" + user);
let requestObj = {
scopes: [resourceUri],
login_hint: currentUser.get_title(),
};
console.log("RequestObj: " + JSON.stringify(requestObj));
return clientApplication
.acquireTokenSilent(requestObj)
.then(function (tokenResponse) {
console.log(
"ExchangeTokenAsync requestObj: " +
tokenResponse.accessToken
);
return tokenResponse.accessToken;
})
.catch(function (error) {
console.log("ExchangeTokenAsync error: " + error);
});
} else {
return Promise.resolve(null);
}
}
</script>
在日志中,我看到以下内容。
在 getCurrentUser 内部
获取标题:<--登录用户名-->
获取电子邮件:<--登录用户电子邮件 ID-->@<--org-name-->.com
获取名称:i:0#.f|membership|<--登录用户电子邮件ID-->@<--org-name-->.com
getOAuthCardResourceUri:api://fed35aaa-xxxx-yyyy-aae0-54a2573bbbbb/Canvas.PVA.SSO
KMT - 用户存在[对象对象]
requestObj: {"scopes":["api://fed35aaa-xxxx-yyyy-aae0-54a2573bbbbb/Canvas.PVA.SSO"],"login_hint":"<--登录用户名-->"}
exchangeTokenAsync requestObj: eyJ0eXAiOiJKV1QiL......令牌编号继续
错误 502 https://directline.botframework.com/v3/directline/conversations/9xbtVbIwi0D8O7T2da9GKP-f/activities
谁能帮我实现这个目标?提前致谢。
答案 0 :(得分:0)
这是可以帮助您进行共享点 SSO 的 doc 和 repo。支持用户登录和 SSO 的 OAuth 服务。以下是 S2S 和用户身份验证的示例。
Bot-authentication 演示了如何为用户身份验证流程集成 OAuth 提供程序。