int gridmap_bad_params_test(void) { char * globusid = "globusid"; char * userid = "userid"; int rc; rc = setenv("GRIDMAP", "grid-mapfile", 1); if (rc != 0) { fprintf(stderr, "Error setting GRIDMAP location\n"); goto out; } rc = globus_gss_assist_gridmap(NULL, &userid); if (rc == GLOBUS_SUCCESS) { fprintf(stderr, "Unexpected success: globus_gss_assist_gridmap with null globusid\n"); rc = 1; goto out; } rc = globus_gss_assist_gridmap(globusid, NULL); if (rc == GLOBUS_SUCCESS) { fprintf(stderr, "Unexpected success: globus_gss_assist_gridmap with null userid\n"); rc = 1; goto out; } rc = 0; out: return rc; }
int gridmap_test(void) { struct gridmap_lookup_result tests[] = { { "gridmap.empty", test_dn, NULL, GLOBUS_FALSE }, { "gridmap.no-local-uid", test_dn, NULL, GLOBUS_FALSE }, { "gridmap.no-local-uid2", test_dn, NULL, GLOBUS_FALSE }, { "grid-mapfile", test_dn, primary_username, GLOBUS_TRUE }, { "grid-mapfile", wrong_test_dn, NULL, GLOBUS_FALSE } }; char * username; int i; int failed; int rc; for (i = 0, failed = 0; i < SIZEOF_ARRAY(tests); i++) { rc = setenv("GRIDMAP", tests[i].gridmap, 1); if (rc != 0) { fprintf(stderr, "Error setting GRIDMAP location\n"); failed++; continue; } rc = globus_gss_assist_gridmap(tests[i].dn, &username); if (rc != 0 && tests[i].success) { fprintf(stderr, "globus_gss_assist_gridmap unexpectedly failed [lookup %s in %s]\n", tests[i].dn, tests[i].gridmap); failed++; continue; } else if (rc == 0 && !tests[i].success) { fprintf(stderr, "globus_gss_assist_gridmap unexpectedly succeeded [lookup %s in %s]\n", tests[i].dn, tests[i].gridmap); failed++; continue; } else if (rc == 0 && strcmp(tests[i].username, username) != 0) { fprintf(stderr, "globus_gss_assist_gridmap mapped to wrong name [lookup %s in %s]\nexpected \"%s\" got \"%s\"", tests[i].dn, tests[i].gridmap, username, tests[i].username); failed++; continue; } if (username != NULL) { free(username); username = NULL; } } return failed; }
/* * Return the local username associated with the GSI credentials. */ int ssh_gssapi_gsi_localname(ssh_gssapi_client *client, char **user) { globus_result_t res; #ifdef HAVE_GLOBUS_GSS_ASSIST_MAP_AND_AUTHORIZE char lname[256] = ""; #endif #ifdef GLOBUS_GSI_GSS_ASSIST_MODULE if (globus_module_activate(GLOBUS_GSI_GSS_ASSIST_MODULE) != 0) { return 0; } #endif /* use new globus_gss_assist_map_and_authorize() interface if available */ #ifdef HAVE_GLOBUS_GSS_ASSIST_MAP_AND_AUTHORIZE debug("calling globus_gss_assist_map_and_authorize()"); if (GLOBUS_SUCCESS != (res = globus_gss_assist_map_and_authorize(client->context, "ssh", NULL, lname, 256))) { debug("%s", globus_error_print_chain(globus_error_get(res))); logit("failed to map GSI user %s", (char *)client->displayname.value); return 0; } *user = strdup(lname); #else debug("calling globus_gss_assist_gridmap()"); if (GLOBUS_SUCCESS != (res = globus_gss_assist_gridmap(client->displayname.value, user))) { debug("%s", globus_error_print_chain(globus_error_get(res))); logit("failed to map GSI user %s", (char *)client->displayname.value); return 0; } #endif logit("GSI user %s mapped to target user %s", (char *) client->displayname.value, *user); return 1; }