我正在努力了解休息拦截器注释如何添加稍后在过滤器中可见的不同值.鉴于下面的代码,我希望在过滤器中,权限值将包含foo和bar,但它们是空的.任何帮助将不胜感激.
注解
package edu.psu.swe.fortress.poc.interceptor;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import javax.enterprise.util.Nonbinding;
import javax.ws.rs.NameBinding;
@NameBinding
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(value=RetentionPolicy.RUNTIME)
public @interface FortressProtected
{
@Nonbinding String[] permissions() default {};
}
Run Code Online (Sandbox Code Playgroud)
过滤
package edu.psu.swe.fortress.poc.interceptor;
import java.io.IOException;
import java.lang.annotation.Annotation;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerRequestFilter;
import javax.ws.rs.ext.Provider;
@Provider
@FortressProtected
public class FortressAuthorizer implements ContainerRequestFilter
{
@Override
public void filter(ContainerRequestContext requestContext) throws IOException
{
System.out.println("In the interceptor");
Class<?> clazz = this.getClass();
FortressProtected annotation = clazz.getAnnotation(edu.psu.swe.fortress.poc.interceptor.FortressProtected.class);
System.out.println("Annotation? " + clazz.isAnnotation());
for (Annotation a : clazz.getAnnotations())
{ …Run Code Online (Sandbox Code Playgroud) 所有,
任何人都可以提供有关如何使用JAAS LoginContext对多个KDC/Realm组合进行身份验证的建议.换句话说,如果尝试1对领域A失败,请尝试领域B.
像下面的伪代码.
一如既往,非常感谢任何帮助.
查看plaincopy到clipboardprint?
[realms]
some.address.for.auth.one
{
kdc = some.address.one
}
some.address.for.auth.two
{
kdc = some.address.two
}
boolean loginSuccess = false;
try
{
LoginContext lc = new LoginContext(...);
//Try Realm 1
lc.login();
loginSuccess = true;
}
catch(LoginException le)
{
try
{
LoginContext lc2 = new LoginContext(...);
//Try Realm 2
lc2.login();
loginSuccess = true;
}
catch(LoginException le)
{
//...
}
}
return loginSuccess;
Run Code Online (Sandbox Code Playgroud)