Author: dumindu
Date: Mon Feb 25 22:17:06 2008
New Revision: 14197

Log:

Added the config directive "CardSpaceSessionManageOverride".




Modified:
   trunk/solutions/identity/modules/mod-cspace/cspace_config.c
   trunk/solutions/identity/modules/mod-cspace/cspace_validator.c
   trunk/solutions/identity/modules/mod-cspace/mod_cspace.c
   trunk/solutions/identity/modules/mod-cspace/mod_cspace.h

Modified: trunk/solutions/identity/modules/mod-cspace/cspace_config.c
==============================================================================
--- trunk/solutions/identity/modules/mod-cspace/cspace_config.c (original)
+++ trunk/solutions/identity/modules/mod-cspace/cspace_config.c Mon Feb 25 
22:17:06 2008
@@ -50,13 +50,14 @@
 void cfg_dir_printf_fn(const char* st, cspace_dir_cfg *cfg, const char* nl)
 {
     if (cfg)
-        printf("%s\t%p, cspace:%s, dir:%s, sess:%s, sso:%s" 
-               "sess_file:%s%s",
+        printf("%s\t%p, cspace:%s, dir:%s, sess:%s, sess_ovr:%s, sso:%s, " 
+               "sess_file:%s, %s",
                st,
                (void*)cfg,
                cfg->use_cspace_auth?"true":"false",
                cfg->dirspec,
                cfg->session?"true":"false",
+               cfg->session_overridden?"true":"false",
                cfg->sso?"true":"false",
                cfg->session_file,
                nl);
@@ -83,6 +84,14 @@
     return NULL;
 }
 
+static const char *cmd_session_manage_override(cmd_parms *cmd, void *mconfig,
+                                               int arg)
+{
+    cspace_dir_cfg *cfg = (cspace_dir_cfg *)mconfig;
+    cfg->session_overridden = arg ? 1 : 0;
+    return NULL;
+}
+
 static const char *cmd_cspace_xml_token(cmd_parms *cmd, void *mconfig, 
                                   const char *arg)
 {
@@ -190,6 +199,9 @@
                     "directory"),
     AP_INIT_FLAG("CardSpaceSessionManage", cmd_session_manage,
                  NULL, OR_ALL, "whether to enable session management or not"),
+    AP_INIT_FLAG("CardSpaceSessionManageOverride", cmd_session_manage_override,
+                 NULL, OR_ALL, "enable this to override session management" 
+                               "enabled using CardSpaceSessionManage"),
     AP_INIT_TAKE1("CardSpaceXmlToken", cmd_cspace_xml_token, NULL, OR_ALL, 
                   "Name of the XML token sent"),
     AP_INIT_TAKE1("CardSpaceExemptURI", cmd_cspace_exempt_uri, NULL, OR_ALL, 
@@ -307,6 +319,7 @@
     cfg->login_page = apr_array_make(p, DEF_IGNORE_LIST_SIZE, 
                                      sizeof(const char *));
     cfg->session = 0;
+    cfg->session_overridden = 0;
     cfg->sso = 0;
 
     if (dirspec) {
@@ -342,8 +355,11 @@
         merged_cfg->login_page = pcfg->login_page;
     else
         merged_cfg->login_page = ocfg->login_page;
-
+    
     merged_cfg->session = pcfg->session | ocfg->session;
+    merged_cfg->session_overridden = pcfg->session_overridden | 
+                        ocfg->session_overridden;
+
     merged_cfg->sso = pcfg->sso | ocfg->sso;
    
     temp_char = (ocfg->session_file) ? ocfg->session_file : pcfg->session_file;

Modified: trunk/solutions/identity/modules/mod-cspace/cspace_validator.c
==============================================================================
--- trunk/solutions/identity/modules/mod-cspace/cspace_validator.c      
(original)
+++ trunk/solutions/identity/modules/mod-cspace/cspace_validator.c      Mon Feb 
25 22:17:06 2008
@@ -136,23 +136,37 @@
     return FAIL;
 }
 
+#define MAX_HOST_NAME_LEN 1024
+
 static int black_list_validator(const char *uri, const char *issuer,
                                 const char *ppid, const char *cert,
                                 const char *b_list)
 {
-    char line[5];
+    char line[MAX_HOST_NAME_LEN];
     FILE *fp = NULL;
+    X509 *crt= NULL;
+    char *cn = NULL;
+
+    if (cert) {
+       crt = x509_create_with_buffer((void *)cert, strlen(cert));
+    }
 
     if ((fp = fopen(b_list, "r"))) {
 
-        while (fgets(line, 5, fp) != NULL)
-        {
-            /*strcmp with the cert's CN*/
+        while (fgets(line, MAX_HOST_NAME_LEN, fp) != NULL) {
+
+            if (strstr(line, cn)) {
+                fclose(fp);
+                return FAIL;
+            }
+
         }
     } else {
         return FAIL;
     }
-    /* if no fopen error and not it black list then allow em*/
+    
+    fclose(fp);
+    /*if not found in black list allow it*/
     return SUCC;
 }
 

Modified: trunk/solutions/identity/modules/mod-cspace/mod_cspace.c
==============================================================================
--- trunk/solutions/identity/modules/mod-cspace/mod_cspace.c    (original)
+++ trunk/solutions/identity/modules/mod-cspace/mod_cspace.c    Mon Feb 25 
22:17:06 2008
@@ -76,12 +76,7 @@
   
 }
 
-/* TODO:DONE This function should ideally redirect the browser to the url 
specified
- * by url. This is only used to redirect the browser to the login page when an
- * HTTP_UNAUTHORIZED occurs.
- *
- * We can live with the plain HTTP_UNAUTHORIZED for the moment
- */ 
+#if 0
 static int redirect_internal(request_rec *r, char* url)
 {
     remove_cspace_headers(r);
@@ -89,6 +84,7 @@
     return OK;
     /*return HTTP_UNAUTHORIZED;*/
 }
+#endif
 
 static int find_uri(const char *uri, apr_array_header_t *a)
 {
@@ -121,22 +117,24 @@
 
 
 /*This piece of code is used only for testing purposes*/
-/*
-static int cspace_access_check(request_rec *r) {
-    printf("cspace_access_check:\n");
+#ifdef CSPACE_DEBUG
+static int cspace_access_check_testing(request_rec *r) {
+
 
     cspace_dir_cfg *dir_cfg = (cspace_dir_cfg *)ap_get_module_config(
             r->per_dir_config, &cspace_module);
     
     cspace_svr_cfg *svr_cfg = (cspace_svr_cfg *)ap_get_module_config(
             r->server->module_config, &cspace_module);
-    
-    cfg_svr_printf("\tchk_svr_cfg", svr_cfg, "\n");
 
-    cfg_dir_printf("\tchk_dir_cfg", dir_cfg, "\n");
+    printf("\n\n\nCSPACE_ACCESS_CHECK\n");
+    cfg_svr_printf("\tsvr cfg:", svr_cfg, "\n");
+    cfg_dir_printf("\tdir cfg:", dir_cfg, "\n");
+    printf("\tURI: %s\n\n\n\n", r->uri);
+     
     return DECLINED;
 }
-*/
+#endif
 
 /* FROM http_filter.c:
  *
@@ -821,10 +819,10 @@
                                                      &cspace_module);
 
 #ifdef CSPACE_DEBUG
-    printf("CSPACE_ACCESS_CHECK\n");
+    printf("\n\n\nCSPACE_ACCESS_CHECK\n");
     cfg_svr_printf("\tsvr cfg:", svr_cfg, "\n");
     cfg_dir_printf("\tdir cfg:", dir_cfg, "\n");
-    printf("\turi: %s\n", r->uri);
+    printf("\tURI: %s\n\n\n\n", r->uri);
 #endif
     
     if (!(dir_cfg->use_cspace_auth))
@@ -843,7 +841,7 @@
         return UNAUTHORIZED_REDIRECT(r, dir_cfg->redir_uri);
     }
 
-    if (dir_cfg->session) {
+    if (dir_cfg->session && !dir_cfg->session_overridden) {
         if (dir_cfg->sso) {
             return handle_session_sso(r, dir_cfg, svr_cfg);
         } else {
@@ -862,8 +860,8 @@
     /* return UNAUTHORIZED_REDIRECT(r, dir_cfg->redir_uri); */
 }
 
-char data[] = 
"MIIDRDCCAq2gAwIBAgIJAIhSvW2QQbDDMA0GCSqGSIb3DQEBBQUAMIGcMQswCQYDVQQGEwJMSzEQMA4GA1UECBMHV2VzdGVybjEeMBwGA1UEChMVV1NPMiBMYW5rYSAoUHZ0KSBMdGQuMREwDwYDVQQLEwhTZWN1cml0eTEiMCAGA1UEAxMZV1NPMiBJZGVudGl0eSBTb2x1dGlvbiBDQTEkMCIGCSqGSIb3DQEJARYVaWRlbnRpdHktZGV2QHdzbzIub3JnMB4XDTA3MDkyODEyNTkzNloXDTI0MDMwMjEyNTkzNlowezELMAkGA1UEBhMCTEsxEDAOBgNVBAgTB1dlc3Rlcm4xEDAOBgNVBAcTB0NvbG9tYm8xDTALBgNVBAoTBFdTTzIxGjAYBgNVBAsTEUlkZW50aXR5IFNvbHV0aW9uMR0wGwYDVQQDExRpZGVudGl0eS5say53c28yLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwUgh+jegaVAoCBbYg9gsUzxlpoD7UeX3R39rMpqQpAsTtCC7Jks1CCpF1jFttyPcXagRoOL6xXAbpjKyyzU08DoC8Gsnzlmj8nyPw1n8hr5e1g+5ZMxf7S+P5Op7QzASoQUQhMyEOlM24KtombTsg+0YZV4g7YndauDckNSIGlUCAwEAAaOBrTCBqjAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUOq/5DXiozYJeuwbT8VFH3rHjoVYwHwYDVR0jBBgwFoAU2NAfBYUWO847BEWZGDwwBtsmB2swLwYJYIZIAYb4QgEEBCIWIGh0dHA6Ly9jYS5pcy53c28yLm9yZy9jYS1jcmwucGVtMA0GCSqGSIb3DQEBBQUAA4GBAANDXhknYtcrXReWSkvkUJgUvfEWlBnB93SUC8G5JYjojDCjGYeb3kSVJGtUqO3U4M3iXNFJHdoVD7ytrNSoR9KlbSsk5OXeK/zSIZ9Dj18NMeAXk6nIu8Zj4sbN6MIDhHBCpR9T3lUe4JmkgNp78l/eibH9btEq/e+mp5UXVcQ/";
-
+/*char data[] = 
"MIIDRDCCAq2gAwIBAgIJAIhSvW2QQbDDMA0GCSqGSIb3DQEBBQUAMIGcMQswCQYDVQQGEwJMSzEQMA4GA1UECBMHV2VzdGVybjEeMBwGA1UEChMVV1NPMiBMYW5rYSAoUHZ0KSBMdGQuMREwDwYDVQQLEwhTZWN1cml0eTEiMCAGA1UEAxMZV1NPMiBJZGVudGl0eSBTb2x1dGlvbiBDQTEkMCIGCSqGSIb3DQEJARYVaWRlbnRpdHktZGV2QHdzbzIub3JnMB4XDTA3MDkyODEyNTkzNloXDTI0MDMwMjEyNTkzNlowezELMAkGA1UEBhMCTEsxEDAOBgNVBAgTB1dlc3Rlcm4xEDAOBgNVBAcTB0NvbG9tYm8xDTALBgNVBAoTBFdTTzIxGjAYBgNVBAsTEUlkZW50aXR5IFNvbHV0aW9uMR0wGwYDVQQDExRpZGVudGl0eS5say53c28yLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwUgh+jegaVAoCBbYg9gsUzxlpoD7UeX3R39rMpqQpAsTtCC7Jks1CCpF1jFttyPcXagRoOL6xXAbpjKyyzU08DoC8Gsnzlmj8nyPw1n8hr5e1g+5ZMxf7S+P5Op7QzASoQUQhMyEOlM24KtombTsg+0YZV4g7YndauDckNSIGlUCAwEAAaOBrTCBqjAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUOq/5DXiozYJeuwbT8VFH3rHjoVYwHwYDVR0jBBgwFoAU2NAfBYUWO847BEWZGDwwBtsmB2swLwYJYIZIAYb4QgEEBCIWIGh0dHA6Ly9jYS5pcy53c28yLm9yZy9jYS1jcmwucGVtMA0GCSqGSIb3DQEBBQUAA4GBAANDXhknYtcrXReWSkvkUJgUvfEWlBnB93SUC8G5JYjojDCjGYeb3kSVJGtUqO3U4M3iXNFJHdoVD7ytrNSoR9KlbSsk5OXeK/zSIZ9Dj18NMeAXk6nIu8Zj4sbN6MIDhHBCpR9T3lUe4JmkgNp78l/eibH9btEq/e+mp5UXVcQ/";
+*/
 
 static int cspace_post_config(apr_pool_t *pconf, apr_pool_t *plog,
                               apr_pool_t *ptemp, server_rec *s)

Modified: trunk/solutions/identity/modules/mod-cspace/mod_cspace.h
==============================================================================
--- trunk/solutions/identity/modules/mod-cspace/mod_cspace.h    (original)
+++ trunk/solutions/identity/modules/mod-cspace/mod_cspace.h    Mon Feb 25 
22:17:06 2008
@@ -39,6 +39,7 @@
     apr_pool_t *pool;
     int use_cspace_auth;        /*true|false flag*/
     int session;                /*true|false flag*/
+    int session_overridden;                /*true|false flag*/
     int sso;                    /*true|false flag*/
     char dirspec[256];          /*TODO: remove MAGIC numbers*/
     apr_array_header_t *login_page;
@@ -71,7 +72,7 @@
 #define cfg_dir_printf(st, cfg, nl) 
 #endif
 
-const command_rec cspace_cmds[14];
+const command_rec cspace_cmds[15];
 
 void *cspace_svr_cfg_create(apr_pool_t *p, server_rec *s);
 

_______________________________________________
Identity-dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/identity-dev

Reply via email to