我对配置替代执行流程有些困惑。
我当前已配置以下内容。
Cookie <- Alternative
Username Password Form <- Required
TOTP Configured? <- Alternative
OTP Form <- Optional
No, SMS then <- Alternative
SMS Auth <- Optional
您可以猜测,如果未为用户配置OTP,我希望SMS身份验证触发。
目前看来,如果未配置OTP,则会跳过OTP表单,并且身份验证成功,并且会跳过SMS。有没有办法告诉密钥斗篷是否未配置OTP,然后配置了“ TOTP”?执行流程已失败,因此“否,那么短信”执行流程是否起作用?
(在源代码中,它看起来像context.success()如果未为用户配置OTP则被调用。)
我正在使用Keycloak 7.0.0
谢谢
斯图尔特
答案 0 :(得分:0)
通常,顶级执行或子流对于浏览器流必须是替代性(如果您已经通过 Password &&(OTP || SMS),则Cookie足以在应用程序中进行身份验证强>)。从我的角度来看,流程应该是这样的:
import React, { useEffect, useState } from 'react';
import io from 'socket.io-client';
import 'dotenv/config';
import ChatInput from './ChatInput';
import Messages from './Messages';
function App() {
const [messages, setMessages] = useState([]);
const port = process.env.REACT_APP_SERVER_PORT;
const socket = io(`http://localhost:${port}`);
useEffect(() => {
socket
.emit('app:load', messageData => {
setMessages(messages => [...messages, ...messageData]);
})
.on('message:new', newMessage => {
setMessages(messages => [...messages, newMessage]);
});
}, []);
const postMessage = input => {
socket.emit('message:post', input);
};
return (
<div className="App">
<Messages messages={messages} />
<ChatInput postMessage={postMessage} />
</div>
);
}
export default App;
因此,如果我们进入凭据验证阶段:我们必须通过密码验证,那么我们必须通过2FA身份验证者之一(OTP或SMS)。但是SMS和OTP身份验证器应该正确实现(可能您必须调整其源代码。请参阅keycloak src和Keycloak customization docs)。