FusionAuth SAML协调lambda不会降低应用程序角色

时间:2019-08-26 11:25:53

标签: fusionauth

我正在使用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;
}

1 个答案:

答案 0 :(得分:1)

这是外部IdP处理的当前行为。 FusionAuth不知道外部IdP是否正在处理角色,因此当前保留了FusionAuth数据库中的角色,并忽略了通过Lambda设置的角色。仅当用户已经存在时才会发生这种情况。对于新用户,可以在Lambda中设置角色。

我认为其根本原因是某些IdP不提供角色,因此需要在FusionAuth中对其进行完全管理。其他IdP将提供角色,并且可以在Lambda中进行映射。看起来当我们添加Lambda时,我们没有添加指定身份提供者是否将提供角色的功能。

解决此问题的方法是让FusionAuth在身份提供者上具有一个新标志,用于指示IdP是否将解析和管理角色。

如果您想在我们的GitHub问题跟踪器上打开功能请求,我们也许可以为您提供路线图。如果您需要快速为您构建的此功能,也可以联系专业服务。