Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ArcGIS门户-在代码中登录而不提示_C#_Authentication_Arcgis_Arcgis Js Api - Fatal编程技术网

C# ArcGIS门户-在代码中登录而不提示

C# ArcGIS门户-在代码中登录而不提示,c#,authentication,arcgis,arcgis-js-api,C#,Authentication,Arcgis,Arcgis Js Api,我正在尝试编写一个程序,以编程方式将用户登录到ArcGIS门户 以下是我的设想: 用户登录到应用程序A,用户单击到ArcGIS门户的链接-我不希望他们在单击该链接时必须登录到门户,因为他们已经登录到应用程序A 所以 我想: 用户登录到应用程序A,用户单击包含门户链接作为参数的按钮,并重定向到应用程序B。应用程序B将用户登录到门户,并使用应用程序A的链接重定向用户-用户被重定向而无需提示登录 门户使用的是门户层身份验证,我使用的是javascript,但我也可以使用.NET/C# 更新: 我当前的

我正在尝试编写一个程序,以编程方式将用户登录到ArcGIS门户

以下是我的设想:

用户登录到应用程序A,用户单击到ArcGIS门户的链接-我不希望他们在单击该链接时必须登录到门户,因为他们已经登录到应用程序A

所以

我想:

用户登录到应用程序A,用户单击包含门户链接作为参数的按钮,并重定向到应用程序B。应用程序B将用户登录到门户,并使用应用程序A的链接重定向用户-用户被重定向而无需提示登录

门户使用的是门户层身份验证,我使用的是javascript,但我也可以使用.NET/C#

更新:

我当前的解决方案如下所示:

    var url = "https://PORTAL_DOMAIN/portal/sharing/rest/generateToken";
    var redirect = "https://PORTAL_DOMAIN/portal/home/webmap/PLACE_I_WANT_TO_REDIRECT_TO";

    var params = {
        'username': "username",
        'password': "password",
        'client': "referer",
        'referer': redirect,
        'expiration': 60,
        'f': 'json'
    };

    $.post(url, params)
        .done(function (data) {
            var tokenHolder = JSON.parse(data);
            var token = tokenHolder.token;
            $('body').append(token);

            document.cookie("esri_auth", token);
            window.location = redirect;
        });
这段代码从rest服务中获取一个令牌-我尝试将其存储为cookie,但它不会持久

我还尝试使用C#web请求和凭据缓存生成凭据,但没有保存我使用的代码。

解决了这个问题:

好吧,我原来的帖子离我需要的不远了。我缺少的链接是cookie格式和属性

还有一点很重要,您不能在本地运行它,但您必须能够访问portal server,并且它只在发布后才能工作

在下面的代码中:

编码COOKIE-是URL编码的json对象。我登录到我的门户网站,只是复制了cookie格式(使用chrome开发工具),并将生成的令牌连接到cookie中并重定向。我还必须设置cookie的域、过期和路径属性

    var url = "https://PORTAL_DOMAIN/portal/sharing/rest/generateToken";

    var redirect = "https://PORTAL_DOMAIN/portal/home/webmap/PLACE_I_WANT_TO_REDIRECT_TO";

          var params = {
              'username': "username",
              'password': "password",
              'client': "referer",
              'referer': redirect,
              'expiration': 60,
              'f': 'json'
          };



        $.post(url, params)
            .done(function (data) {
                var tokenHolder = JSON.parse(data);
                var token = tokenHolder.token;
                var domain = ".PORTAL_DOMAIN";

                document.cookie = "esri_auth=ENCODED COOKIE;expires=Session;domain=" +domain + ";path=/;secure";

                window.location = redirect;
            });

到目前为止你试过什么?堆栈溢出不是编码服务。在别人愿意帮助你之前,你必须至少付出一些努力来解决你自己的问题。请检查如何创建一个抱歉-我已经为此工作了一个月,已经厌倦了多个解决方案都不起作用。我将发布我的代码。交叉发布为