Esempio n. 1
0
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;
}
Esempio n. 2
0
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;
}