.net core 使用MSAL登录的Microsoft团队选项卡

.net core 使用MSAL登录的Microsoft团队选项卡,.net-core,botframework,microsoft-teams,.net Core,Botframework,Microsoft Teams,我一直在使用MSAL在MS团队中使用自定义选项卡。我一直在遵循这个例子:我可以生成一个令牌。然后我尝试将这个令牌转发到我的API,在那里我构建了一个安全声明,并调用SignInAsync()来持久化cookie 然后将其存储,并转发到我的标准页面,但这不会进行页面身份验证(我未经授权)。有什么我错过的,我需要做的吗 授权页 const signIn=()=>{ msalApp.acquireTokenRedirect(authenticationParameters); } 常量handleSi

我一直在使用MSAL在MS团队中使用自定义选项卡。我一直在遵循这个例子:我可以生成一个令牌。然后我尝试将这个令牌转发到我的API,在那里我构建了一个安全声明,并调用
SignInAsync()
来持久化cookie

然后将其存储,并转发到我的标准页面,但这不会进行页面身份验证(我未经授权)。有什么我错过的,我需要做的吗

授权页

const signIn=()=>{
msalApp.acquireTokenRedirect(authenticationParameters);
}
常量handleSignedIn=()=>{
初始化();
microsoftTeams.authentication.notifySuccess();
}
常量handleSignedOut=(错误)=>{
初始化();
microsoftTeams.authentication.notifyFailure(错误);
}
const handleErrorReceived=(authError,accountState)=>{
日志(authorror,accountState);
handleSignedOut({authError});
}
const handleTokenReceived=(响应)=>{
控制台日志(响应);
handleSignedIn();
}
//主要
const msalApp=新的Msal.UserAgentApplication(msalConfig);
msalApp.handleRedirectCallback((响应)=>handleTokenReceived(响应),(错误,状态)=>handleErrorReceived(错误,状态));
初始化();
microsoftTeams.getContext((上下文)=>{
authenticationParameters={
范围:范围,
loginHint:context.loginHint
};
设置超时(()=>{
attemptSilentSignIn()。然后(成功=>{
如果(成功){
handleSignedIn();
}否则{
签名();
}
});
},
4000);
});
登录页面:

const attemptSilentSignIn=()=>{
renderLoading();
if(msalApp.getAccount()){
msalApp.acquireTokenSilent({scopes})。然后((响应)=>{
if(response&&response.accessToken){
handleSignedIn(response.accessToken);
}否则{
handleSignedOut();
}
}, () => {
handleSignedOut();
})
}否则{
handleSignedOut();
}
}
常量符号=()=>{
renderLoading();
MicrosoftTeam.initialize(()=>{
MicrosoftTeam.authentication.authentication({
url:window.location.origin+“/resources/TeamsAuthFlow.html”,
successCallback:()=>attemptSilentSignIn(),
failureCallback:(错误)=>renderError(错误)
});
});
}
const handleSignedIn=(accessToken)=>{
初始化();
microsoftTeams.getContext((上下文)=>{
var tenant=$(“”).attr(“id”,“TenantId”).attr(“name”,“TenantId”).val(context.tid);
var-token=$(“”).attr(“id”,“AuthToken”).attr(“name”,“AuthToken”).val(accessToken);
var form=$(“”).css(“display”,“none”).attr(“id”,“target”).attr(“method”,“POST”).attr(“action”,“api/TeamsTabSignIn”).append(tenant).append(token).submit();
$(“正文”)。附加(表格);
$(“#目标”).submit();
});
}
常量handleSignedOut=()=>{
renderSignedOutView();
}
//主要
让app=document.querySelector('.app');
const msalApp=新的Msal.UserAgentApplication(msalConfig);
attemptSilentSignIn();
让authenticationParameters=null;
const handleErrorReceived=(authError,accountState)=>{
日志(authorror,accountState);
handleSignedOut({authError});
}
const handleTokenReceived=(响应)=>{
控制台日志(响应);
handleSignedIn();
}
API调用

TenantId=Context.Request.Form[“TenantId”];
AuthToken=Context.Request.Form[“AuthToken”];
var principal=await\u authHelper.SetPlatformUser(TenantId,AuthToken);
if(委托人为索赔人cp)
{
wait Context.SignInAsync(“Cookies”,cp,新身份验证属性{IsPersistent=true});
响应。重定向(“/app/teamspage/Ticket”);
}

这看起来不像是一个机器人框架问题。你能解释一下为什么使用Bot框架标签吗?你能检查一下吗?@Nikitha MSFT这正是我在问题中链接的示例。我可以获得令牌,但无法将cookie保留到我的app@KyleDelaney我标记了Bot框架,因为这是我用来与Bot聊天的东西,如果Bot标签不适用于Bot框架,我很乐意删除该标记。你能检查一下吗?如果有帮助的话,试试看。这看起来不像是一个机器人框架问题。你能解释一下为什么使用Bot框架标签吗?你能检查一下吗?@Nikitha MSFT这正是我在问题中链接的示例。我可以获得令牌,但无法将cookie保留到我的app@KyleDelaney我标记了Bot框架,因为这是我用来与Bot聊天的东西,如果Bot标签不适用于Bot框架,我很乐意删除该标记。你能检查一下吗?如果有帮助的话,试试看。