User Tools

Site Tools


java_security

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revisionBoth sides next revision
java_security [2007/02/09 11:50] slonopotamusjava_security [2007/02/09 12:08] slonopotamus
Line 12: Line 12:
 ==== Зачем защищать ==== ==== Зачем защищать ====
 Чтобы разделять, кому что можно, а кому что нельзя делать. Чтобы разделять, кому что можно, а кому что нельзя делать.
 +
  
 ===== Аутентификация ===== ===== Аутентификация =====
-FIXME+==== Несортированный трэш ==== 
 +<code java> 
 +    //Authorization init 
 +    Policy.setPolicy(new Policy() 
 +    { 
 +      public boolean implies(final ProtectionDomain domain, final Permission permission) 
 +      { 
 +        for (final Principal principal : domain.getPrincipals()) { 
 +          if (principal instanceof MyPrincipal) { 
 +            //получить откуда-то коллекцию прав принципала и вызвать для них implies, передав в качестве аргумента проверяемый пермишен. 
 +          } 
 +        } 
 +        return false; 
 +      } 
 +    }); 
 +    //Authentication init 
 +    final Configuration orig = Configuration.getConfiguration(); 
 +    Configuration.setConfiguration(new Configuration() 
 +    { 
 +      public AppConfigurationEntry[] getAppConfigurationEntry(final String name) 
 +      { 
 +        return (name.equals("MY_APP")) ? 
 +            new AppConfigurationEntry[]{ 
 +                new AppConfigurationEntry( 
 +                    "com.myApp.security.MyLoginModule", //наша реализация LoginModule. 
 +                    AppConfigurationEntry.LoginModuleControlFlag.REQUISITE, 
 +                    Collections.<String, Object>emptyMap() 
 +                ) 
 +            } : orig.getAppConfigurationEntry(name); 
 +      } 
 + 
 +      public void refresh() 
 +      { 
 +        orig.refresh(); 
 +      } 
 +    }); 
 +    System.setSecurityManager(new SecurityManager()); 
 +    //Аутентификация 
 +    final String name = "login"; 
 +    final String password = "password"; 
 +    final LoginContext ctx = new LoginContext("MY_APP", new CallbackHandler() 
 +    { 
 +      public void handle(final Callback[] callbacks) throws IOException, UnsupportedCallbackException 
 +      { 
 +        for (final Callback cb : callbacks) 
 +        { 
 +          if (cb instanceof NameCallback) 
 +          { 
 +            ((NameCallback) cb).setName(name); 
 +          } 
 +          else if (cb instanceof PasswordCallback) 
 +          { 
 +            ((PasswordCallback) cb).setPassword(password.toCharArray()); 
 +          } 
 +          else 
 +          { 
 +            throw new UnsupportedCallbackException(cb); 
 +          } 
 +        } 
 +      } 
 +    }); 
 +    ctx.login(); 
 +    //выполнение кода в контексте аутентифицированного пользователя 
 +    Subject.doAs(ctx.getSubject(), new PrivilegedAction<Object>() 
 +    { 
 +      public Object run() 
 +      { 
 +        //Do something 
 +        return null; 
 +      } 
 +    }); 
 +    ctx.logout(); 
 +</code>
  
 ===== Авторизация ===== ===== Авторизация =====
java_security.txt · Last modified: 2019/06/12 16:08 by 127.0.0.1