在 Microsoft 聊天机器人中通过直线 API 发送 JWT 以对用户进行身份验证
Sending a JWT through Direct-line API to authenticate the user, in Microsoft chat bot
我需要通过直线将 JWt(访问令牌)发送到聊天机器人。我使用 React 作为前端,聊天机器人通过 botframework-webchat
.
集成到前端
到目前为止,我能够通过 activity 发送访问令牌,我认为不推荐这样做。
现在,聊天机器人要求用户登录,这不太好,因为用户已经登录到应用程序。
我的第一个问题 - 是否可以通过 id 令牌对聊天机器人进行身份验证,而不是与 Azure AD、B2C 或任何身份验证服务提供商连接?
如果可能,我如何通过 botframework-webchat
将 id 令牌发送给机器人
提前致谢
这是我的前端代码
const Chatbot = (props) => {
const language = localStorage.getItem('language');
const directLine = useMemo(
() => createDirectLine({ token: <my_token>, locale: 'sv-se' }),
[]
);
useEffect(() => {
var activity = {
from: {
id: '001',
name: 'noviral',
},
name: 'startConversation',
type: 'event',
value: 'Hi noviral!',
locale: language === 'en' ? 'en-US' : 'sv-se',
};
directLine.postActivity(activity).subscribe(function (id) {
if (console) {
console.log('welcome message sent to health bot');
}
});
}, []);
return (
<Layout className="login-layout">
<div className="login-div">
<div className="chatbot">
<div className="consent-wrapper">
<ReactWebChat
directLine={directLine}
userID={'001'}
username="Noviral"
locale={language === 'en' ? 'en-US' : 'sv-se'}
></ReactWebChat>
</div>
</div>
</div>
</Layout>
);
};
export default withTranslation()(Chatbot);
通过 activity 发送令牌是可以接受的,因为通过 Direct Line 发送的活动是安全的。如果查看 24.bot-authentication-msgraph 示例,您会发现机器人执行的默认操作是发送 activity 显示用户令牌。
至于身份验证,问题似乎不是您将使用什么令牌,而是您将如何进行身份验证。如果您不使用服务提供商 + 登录,机器人将如何验证用户是谁?也就是说,有一些 SSO(单个 sign-on)选项可通过网络聊天(参见 here)获得,如果用户已经登录,则 SSO 可以选择它。您必须仔细查看它们,以确定这些选项是否满足您的需求。
我需要通过直线将 JWt(访问令牌)发送到聊天机器人。我使用 React 作为前端,聊天机器人通过 botframework-webchat
.
到目前为止,我能够通过 activity 发送访问令牌,我认为不推荐这样做。
现在,聊天机器人要求用户登录,这不太好,因为用户已经登录到应用程序。
我的第一个问题 - 是否可以通过 id 令牌对聊天机器人进行身份验证,而不是与 Azure AD、B2C 或任何身份验证服务提供商连接?
如果可能,我如何通过 botframework-webchat
提前致谢
这是我的前端代码
const Chatbot = (props) => {
const language = localStorage.getItem('language');
const directLine = useMemo(
() => createDirectLine({ token: <my_token>, locale: 'sv-se' }),
[]
);
useEffect(() => {
var activity = {
from: {
id: '001',
name: 'noviral',
},
name: 'startConversation',
type: 'event',
value: 'Hi noviral!',
locale: language === 'en' ? 'en-US' : 'sv-se',
};
directLine.postActivity(activity).subscribe(function (id) {
if (console) {
console.log('welcome message sent to health bot');
}
});
}, []);
return (
<Layout className="login-layout">
<div className="login-div">
<div className="chatbot">
<div className="consent-wrapper">
<ReactWebChat
directLine={directLine}
userID={'001'}
username="Noviral"
locale={language === 'en' ? 'en-US' : 'sv-se'}
></ReactWebChat>
</div>
</div>
</div>
</Layout>
);
};
export default withTranslation()(Chatbot);
通过 activity 发送令牌是可以接受的,因为通过 Direct Line 发送的活动是安全的。如果查看 24.bot-authentication-msgraph 示例,您会发现机器人执行的默认操作是发送 activity 显示用户令牌。
至于身份验证,问题似乎不是您将使用什么令牌,而是您将如何进行身份验证。如果您不使用服务提供商 + 登录,机器人将如何验证用户是谁?也就是说,有一些 SSO(单个 sign-on)选项可通过网络聊天(参见 here)获得,如果用户已经登录,则 SSO 可以选择它。您必须仔细查看它们,以确定这些选项是否满足您的需求。