我正在使用SAML v2协调lambda来映射ADFS服务器中的角色:
import React from 'react';
import ReactDOM from 'react-dom';
import renderer from 'react-test-renderer';
import Spinner from '../components/Spinner';
import { Dimmer, Loader, Segment } from 'semantic-ui-react';
it('renders without crashing', () => {
const div = document.createElement('div');
ReactDOM.render(<Spinner />, div);
ReactDOM.unmountComponentAtNode(div);
});
it('renders correctly', () => {
const tree = renderer
.create(
<div className="spinner">
<Segment>
<Dimmer active>
< Loader size='big'>Loading</Loader>
</Dimmer>
</Segment>
</div>)
.toJSON();
expect(tree).toMatchSnapshot();
});
添加新角色时,该代码似乎正常工作。为用户注册正确分配了角色。
但是,当我在AD中删除角色时,它不会反映在用户注册中。
在事件日志中,似乎角色已从注册中删除,但是当我在UI中查看用户时,它们保持不变。
function reconcile(user, registration, samlResponse) {
var roles = samlResponse.assertion.attributes['http://schemas.xmlsoap.org/claims/Group'] || [];
registration.roles = roles;
}
答案 0 :(得分:1)
这是外部IdP处理的当前行为。 FusionAuth不知道外部IdP是否正在处理角色,因此当前保留了FusionAuth数据库中的角色,并忽略了通过Lambda设置的角色。仅当用户已经存在时才会发生这种情况。对于新用户,可以在Lambda中设置角色。
我认为其根本原因是某些IdP不提供角色,因此需要在FusionAuth中对其进行完全管理。其他IdP将提供角色,并且可以在Lambda中进行映射。看起来当我们添加Lambda时,我们没有添加指定身份提供者是否将提供角色的功能。
解决此问题的方法是让FusionAuth在身份提供者上具有一个新标志,用于指示IdP是否将解析和管理角色。
如果您想在我们的GitHub问题跟踪器上打开功能请求,我们也许可以为您提供路线图。如果您需要快速为您构建的此功能,也可以联系专业服务。