未验证 提交 5773970a 编写于 作者: J Jesse Glick

Merge branch 'JENKINS-40228' of github.com:ksenia-nenasheva/jenkins into...

Merge branch 'JENKINS-40228' of github.com:ksenia-nenasheva/jenkins into enable-security-JENKINS-40228
...@@ -110,14 +110,10 @@ public class GlobalSecurityConfiguration extends ManagementLink implements Descr ...@@ -110,14 +110,10 @@ public class GlobalSecurityConfiguration extends ManagementLink implements Descr
// for compatibility reasons, the actual value is stored in Jenkins // for compatibility reasons, the actual value is stored in Jenkins
Jenkins j = Jenkins.get(); Jenkins j = Jenkins.get();
j.checkPermission(Jenkins.ADMINISTER); j.checkPermission(Jenkins.ADMINISTER);
if (json.has("useSecurity")) {
JSONObject security = json.getJSONObject("useSecurity"); j.setDisableRememberMe(json.optBoolean("disableRememberMe", false));
j.setDisableRememberMe(security.optBoolean("disableRememberMe", false)); j.setSecurityRealm(SecurityRealm.all().newInstanceFromRadioList(json, "realm"));
j.setSecurityRealm(SecurityRealm.all().newInstanceFromRadioList(security, "realm")); j.setAuthorizationStrategy(AuthorizationStrategy.all().newInstanceFromRadioList(json, "authorization"));
j.setAuthorizationStrategy(AuthorizationStrategy.all().newInstanceFromRadioList(security, "authorization"));
} else {
j.disableSecurity();
}
if (json.has("markupFormatter")) { if (json.has("markupFormatter")) {
j.setMarkupFormatter(req.bindJSON(MarkupFormatter.class, json.getJSONObject("markupFormatter"))); j.setMarkupFormatter(req.bindJSON(MarkupFormatter.class, json.getJSONObject("markupFormatter")));
......
...@@ -70,6 +70,8 @@ import java.util.List; ...@@ -70,6 +70,8 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import net.sf.json.JSONObject;
import org.jenkinsci.Symbol;
/** /**
* Pluggable security realm that connects external user database to Hudson. * Pluggable security realm that connects external user database to Hudson.
...@@ -582,15 +584,6 @@ public abstract class SecurityRealm extends AbstractDescribableImpl<SecurityReal ...@@ -582,15 +584,6 @@ public abstract class SecurityRealm extends AbstractDescribableImpl<SecurityReal
}); });
} }
/**
* This special instance is not configurable explicitly,
* so it doesn't have a descriptor.
*/
@Override
public Descriptor<SecurityRealm> getDescriptor() {
return null;
}
/** /**
* There's no group. * There's no group.
*/ */
...@@ -613,6 +606,21 @@ public abstract class SecurityRealm extends AbstractDescribableImpl<SecurityReal ...@@ -613,6 +606,21 @@ public abstract class SecurityRealm extends AbstractDescribableImpl<SecurityReal
private Object readResolve() { private Object readResolve() {
return NO_AUTHENTICATION; return NO_AUTHENTICATION;
} }
@Extension(ordinal=-100)
@Symbol("none")
public static class DescriptorImpl extends Descriptor<SecurityRealm> {
@Override
public String getDisplayName() {
return Messages.NoneSecurityRealm_DisplayName();
}
@Override
public SecurityRealm newInstance(StaplerRequest req, JSONObject formData) throws Descriptor.FormException {
return NO_AUTHENTICATION;
}
}
} }
/** /**
......
...@@ -25,14 +25,21 @@ l.layout(norefresh:true, permission:app.ADMINISTER, title:my.displayName, csscla ...@@ -25,14 +25,21 @@ l.layout(norefresh:true, permission:app.ADMINISTER, title:my.displayName, csscla
set("instance",my) set("instance",my)
set("descriptor", my.descriptor) set("descriptor", my.descriptor)
f.optionalBlock( field:"useSecurity", title:_("Enable security"), checked:app.useSecurity) { f.section(title:_("Authentication")) {
f.entry() { f.entry() {
f.checkbox(title:_("Disable remember me"), field: "disableRememberMe") f.checkbox(title:_("Disable remember me"), field: "disableRememberMe")
} }
f.entry(title:_("Access Control")) { f.entry(title:_("Security Realm")) {
table(style:"width:100%") { table(style:"width:100%") {
f.descriptorRadioList(title:_("Security Realm"),varName:"realm", instance:app.securityRealm, descriptors:h.filterDescriptors(app, SecurityRealm.all())) f.descriptorRadioList(title:_("Security Realm"),varName:"realm", instance:app.securityRealm, descriptors:h.filterDescriptors(app, SecurityRealm.all()))
}
}
}
f.section(title:_("Authorization")) {
f.entry(title:_("Strategy")) {
table(style:"width:100%") {
f.descriptorRadioList(title:_("Authorization"), varName:"authorization", instance:app.authorizationStrategy, descriptors:h.filterDescriptors(app, AuthorizationStrategy.all())) f.descriptorRadioList(title:_("Authorization"), varName:"authorization", instance:app.authorizationStrategy, descriptors:h.filterDescriptors(app, AuthorizationStrategy.all()))
} }
} }
......
...@@ -69,3 +69,5 @@ PAMSecurityRealm.Uid=uid: {0} ...@@ -69,3 +69,5 @@ PAMSecurityRealm.Uid=uid: {0}
# not in use # not in use
Permission.Permissions.Title=N/A Permission.Permissions.Title=N/A
AccessDeniedException2.MissingPermission={0} is missing the {1} permission AccessDeniedException2.MissingPermission={0} is missing the {1} permission
NoneSecurityRealm.DisplayName=None
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册