小编Tim*_*imo的帖子

带有 metadata.xml 文件的 Passport + SAML

我正在使用 express 和 ejs 设置 Web 应用程序,并且需要集成 SAML 身份验证。我有一个 metadata.xml、一个公共证书和一个私钥。现在我想设置此策略并将其用于身份验证。我尝试使用一个名为passport-saml-metadata的模块,但是每当我尝试对其进行身份验证时,它都会说:错误:未知的身份验证策略“saml”,尽管它与其他有效的策略在同一文件中定义和导出。

首先我尝试使用passport-saml模块手动配置SAML,但后来我注意到它们是一个passport-saml-metadata,它可以处理我的元数据文件并建立策略,所以我决定使用这个。我现在有一个“有效”(它在执行中的任何时候都不会抱怨),但是当我调用路由时没有找到策略。同一文件中的其他策略被识别并且可以轻松工作。

护照配置:

// Read the metadata
const reader = new MetadataReader(
    fs.readFileSync(path.join(__dirname, './metadata.xml'), 'utf8')
);
const ipConfig = toPassportConfig(reader);

const spPublicCertificate = path.join(__dirname, './server.crt');
    const spPrivateKey = path.join(__dirname, './private_key.pem');

    const spConfig = {
        callbackUrl: `http://localhost:3300/auth/saml/sso/callback`,
        logoutCallbackUrl: `http://localhost:3300/auth/saml/slo/callback`,
        issuer: '/shibboleth',
        privateCert: spPrivateKey
    };

    const strategyConfig = {
        ...ipConfig,
        ...spConfig,
        validateInResponseTo: false,
        disableRequestedAuthnContext: true,
    };

    const verifyProfile = (profile, done) => {
        return done(null, { ...profile, test: 'xxx' });
    };
const samlStrategy …
Run Code Online (Sandbox Code Playgroud)

saml node.js passport.js passport-saml

7
推荐指数
1
解决办法
1848
查看次数

Java 存储枚举与结果的组合

我有一个非常棘手的问题,目前无法找到答案:

我拥有的是一个带有 x 变体的枚举,例如:

public enum Symbol {
    ROCK,
    PAPER,
    SCISSORS;
}
Run Code Online (Sandbox Code Playgroud)

这个枚举应该扩展一个、两个……变体(如石头、布、剪刀、史波克、蜥蜴),我正在寻找一个选项来存储组合的结果(在示例中,谁获胜)。就像在《石头、剪刀、布》中一样,我无法为枚举分配权重/值,然后可以将其用于比较。比较的结果不是基于逻辑的。我目前正在做的是:

public Result calculateResult(Symbol hand2) {

            Symbol handP1 = this;
            Symbol handP2 = hand2;

            if (handP1 == Symbol.ROCK) {
                switch (handP2) {
                    case SCISSORS:
                        return Result.WIN;
                    case ROCK:
                        return Result.TIE;
                    case PAPER:
                        return Result.LOOSE;
                } ....
Run Code Online (Sandbox Code Playgroud)

我对比较的第一个元素的每个可能选项都执行此操作(在示例 hand1 中)。对于 3 个枚举,这非常简单和整洁,但是对于 4,5 个或更多,它很快就会变得混乱。使用 if 和 else if 进行比较也不太合适。有没有更好的方法来处理这个问题?

如果你想自己尝试一下,我已经设置了一个 repl:REPL 链接

使用 for 或更多选择打破了 3 个选择可能存在的循环关系。请参阅此处的示例:

5 个选择

感谢您提供任何可能帮助我获得更好解决方案的提示和提示

java enums combinations

5
推荐指数
1
解决办法
625
查看次数

标签 统计

combinations ×1

enums ×1

java ×1

node.js ×1

passport-saml ×1

passport.js ×1

saml ×1