Unattended authorization into API - no longer possible?










0















A brief investigation shows that there once existed an authorization mode known as SOBO (for example, see docusign send on behalf functionality), which I find useful in a scenario when an application associates signing requests not with a logged-on user but with some other user. However I am unable to find any mention of it in current documentation; on the contrary, documentation clearly says only 3 grant types are supported, and all three involve impersonated user's actively expressing his consent. No way to just send user credentials, or, alternatively, have user express his consent just once on the docusign admin page, then reuse that consent for, say, one year or forever. Or some other way to avoid end user interaction.



Also, a requirement of using redirect URI to send back continuation data implies one has to either use on-premise solution or make one's application visible on the internet. No way to use public docusign service with on-premise application, right?










share|improve this question


























    0















    A brief investigation shows that there once existed an authorization mode known as SOBO (for example, see docusign send on behalf functionality), which I find useful in a scenario when an application associates signing requests not with a logged-on user but with some other user. However I am unable to find any mention of it in current documentation; on the contrary, documentation clearly says only 3 grant types are supported, and all three involve impersonated user's actively expressing his consent. No way to just send user credentials, or, alternatively, have user express his consent just once on the docusign admin page, then reuse that consent for, say, one year or forever. Or some other way to avoid end user interaction.



    Also, a requirement of using redirect URI to send back continuation data implies one has to either use on-premise solution or make one's application visible on the internet. No way to use public docusign service with on-premise application, right?










    share|improve this question
























      0












      0








      0








      A brief investigation shows that there once existed an authorization mode known as SOBO (for example, see docusign send on behalf functionality), which I find useful in a scenario when an application associates signing requests not with a logged-on user but with some other user. However I am unable to find any mention of it in current documentation; on the contrary, documentation clearly says only 3 grant types are supported, and all three involve impersonated user's actively expressing his consent. No way to just send user credentials, or, alternatively, have user express his consent just once on the docusign admin page, then reuse that consent for, say, one year or forever. Or some other way to avoid end user interaction.



      Also, a requirement of using redirect URI to send back continuation data implies one has to either use on-premise solution or make one's application visible on the internet. No way to use public docusign service with on-premise application, right?










      share|improve this question














      A brief investigation shows that there once existed an authorization mode known as SOBO (for example, see docusign send on behalf functionality), which I find useful in a scenario when an application associates signing requests not with a logged-on user but with some other user. However I am unable to find any mention of it in current documentation; on the contrary, documentation clearly says only 3 grant types are supported, and all three involve impersonated user's actively expressing his consent. No way to just send user credentials, or, alternatively, have user express his consent just once on the docusign admin page, then reuse that consent for, say, one year or forever. Or some other way to avoid end user interaction.



      Also, a requirement of using redirect URI to send back continuation data implies one has to either use on-premise solution or make one's application visible on the internet. No way to use public docusign service with on-premise application, right?







      docusignapi






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 14 '18 at 16:02









      Maksim GumerovMaksim Gumerov

      367217




      367217






















          2 Answers
          2






          active

          oldest

          votes


















          1














          DocuSign is discouraging Legacy Header authentication because it requires your integration to hold on to the user's plain-text password. It also cannot support accounts that leverage Single-Sign On or Two-Factor Authentication. The long-term plan is likely to eventually retire it entirely, but there's no timeline for that. Documentation has been retired, but integrations that have used it in the past can still do so.



          JWT auth is the equivalent replacement. With individual consent, a user grants the integration access once. Unless the user revokes that consent, the integration will be able to generate access tokens to act as the user indefinitely - JWT consent does not expire.



          If you have an Organization with a Claimed Domain, an org admin can grant blanket consent to allow an integration to act as any user under that domain. If you'd like to grant consent to an integrator key owned by your organization, it's as simple as navigating to Org Admin > Applications > Authorize Application. Granting consent to a 3rd party app is similar to the Individual Consent workflow, but has extra scopes as documented here: https://developers.docusign.com/esign-rest-api/guides/authentication/obtaining-consent



          Note that while JWT auth does require a redirect URI to be registered, an integration doesn't necessarily need to 'catch' the user after they've granted consent. While it would be recommended that the landing page trigger the user to move forward in the workflow, it's acceptable to point your redirect URI to https://www.example.com, grant consent, and then generate an access token.






          share|improve this answer
































            -1














            I know this question has already been answered, but I'll post this answer here just in case someone still needs to do this. This method does not require user's consent. The below is Node.js / JS but can be easily translated into whatever language with the basics below.



            // set default authentication for DocuSign; pulls data from this account
            var auth =
            'Username': '(user email)',
            'Password': '(user password)',
            'IntegratorKey': '(api key found in admin)',
            ;
            var options =
            'uri': 'https://www.docusign.net/restapi/v2/login_information',
            'method': 'GET',
            'body': '',
            'headers':
            'Content-Type': 'application/json',
            // turns the auth object into JSON
            'X-DocuSign-Authentication': JSON.stringify(auth)

            ;
            // send off your request using the options above


            The above returns a response:




            "loginAccounts": [

            "name":"Your Company Name",
            "accountId":"0000000",
            "baseUrl":"https://your_subdomain.docusign.net/restapi/v2/accounts/0000000",
            "isDefault":"true",
            "userName":"User's Name",
            "userId":"(36 character UUID)",
            "email":"user@example.com",
            "siteDescription":""

            ]



            At this point, you can have to save the baseUrl and accountId that is returned. For the baseUrl, you only need to save the the sub-domain and domain url (https://your_subdomain.docusign.net), not the url paramters after that.



            Now you can have enough information to make requests. The below example request pulls all the templates under this account.



            var options = 
            'uri': baseUri+'/accounts/'+accountId+'/templates',
            'method': 'GET',
            'body': '',
            'headers':
            'Content-Type': 'application/json',
            // turns the auth object into JSON
            'X-DocuSign-Authentication': JSON.stringify(auth)

            ;
            // send off your request using the options above





            share|improve this answer























            • Thanks for sharing, but since this is now discouraged, I don't think it's wise to use it anymore.

              – Maksim Gumerov
              Nov 20 '18 at 18:27











            • Legacy auth should not be used for new integrations.

              – Larry K
              Nov 25 '18 at 21:19










            Your Answer






            StackExchange.ifUsing("editor", function ()
            StackExchange.using("externalEditor", function ()
            StackExchange.using("snippets", function ()
            StackExchange.snippets.init();
            );
            );
            , "code-snippets");

            StackExchange.ready(function()
            var channelOptions =
            tags: "".split(" "),
            id: "1"
            ;
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function()
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled)
            StackExchange.using("snippets", function()
            createEditor();
            );

            else
            createEditor();

            );

            function createEditor()
            StackExchange.prepareEditor(
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader:
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            ,
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            );



            );













            draft saved

            draft discarded


















            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53304271%2funattended-authorization-into-api-no-longer-possible%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown

























            2 Answers
            2






            active

            oldest

            votes








            2 Answers
            2






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            1














            DocuSign is discouraging Legacy Header authentication because it requires your integration to hold on to the user's plain-text password. It also cannot support accounts that leverage Single-Sign On or Two-Factor Authentication. The long-term plan is likely to eventually retire it entirely, but there's no timeline for that. Documentation has been retired, but integrations that have used it in the past can still do so.



            JWT auth is the equivalent replacement. With individual consent, a user grants the integration access once. Unless the user revokes that consent, the integration will be able to generate access tokens to act as the user indefinitely - JWT consent does not expire.



            If you have an Organization with a Claimed Domain, an org admin can grant blanket consent to allow an integration to act as any user under that domain. If you'd like to grant consent to an integrator key owned by your organization, it's as simple as navigating to Org Admin > Applications > Authorize Application. Granting consent to a 3rd party app is similar to the Individual Consent workflow, but has extra scopes as documented here: https://developers.docusign.com/esign-rest-api/guides/authentication/obtaining-consent



            Note that while JWT auth does require a redirect URI to be registered, an integration doesn't necessarily need to 'catch' the user after they've granted consent. While it would be recommended that the landing page trigger the user to move forward in the workflow, it's acceptable to point your redirect URI to https://www.example.com, grant consent, and then generate an access token.






            share|improve this answer





























              1














              DocuSign is discouraging Legacy Header authentication because it requires your integration to hold on to the user's plain-text password. It also cannot support accounts that leverage Single-Sign On or Two-Factor Authentication. The long-term plan is likely to eventually retire it entirely, but there's no timeline for that. Documentation has been retired, but integrations that have used it in the past can still do so.



              JWT auth is the equivalent replacement. With individual consent, a user grants the integration access once. Unless the user revokes that consent, the integration will be able to generate access tokens to act as the user indefinitely - JWT consent does not expire.



              If you have an Organization with a Claimed Domain, an org admin can grant blanket consent to allow an integration to act as any user under that domain. If you'd like to grant consent to an integrator key owned by your organization, it's as simple as navigating to Org Admin > Applications > Authorize Application. Granting consent to a 3rd party app is similar to the Individual Consent workflow, but has extra scopes as documented here: https://developers.docusign.com/esign-rest-api/guides/authentication/obtaining-consent



              Note that while JWT auth does require a redirect URI to be registered, an integration doesn't necessarily need to 'catch' the user after they've granted consent. While it would be recommended that the landing page trigger the user to move forward in the workflow, it's acceptable to point your redirect URI to https://www.example.com, grant consent, and then generate an access token.






              share|improve this answer



























                1












                1








                1







                DocuSign is discouraging Legacy Header authentication because it requires your integration to hold on to the user's plain-text password. It also cannot support accounts that leverage Single-Sign On or Two-Factor Authentication. The long-term plan is likely to eventually retire it entirely, but there's no timeline for that. Documentation has been retired, but integrations that have used it in the past can still do so.



                JWT auth is the equivalent replacement. With individual consent, a user grants the integration access once. Unless the user revokes that consent, the integration will be able to generate access tokens to act as the user indefinitely - JWT consent does not expire.



                If you have an Organization with a Claimed Domain, an org admin can grant blanket consent to allow an integration to act as any user under that domain. If you'd like to grant consent to an integrator key owned by your organization, it's as simple as navigating to Org Admin > Applications > Authorize Application. Granting consent to a 3rd party app is similar to the Individual Consent workflow, but has extra scopes as documented here: https://developers.docusign.com/esign-rest-api/guides/authentication/obtaining-consent



                Note that while JWT auth does require a redirect URI to be registered, an integration doesn't necessarily need to 'catch' the user after they've granted consent. While it would be recommended that the landing page trigger the user to move forward in the workflow, it's acceptable to point your redirect URI to https://www.example.com, grant consent, and then generate an access token.






                share|improve this answer















                DocuSign is discouraging Legacy Header authentication because it requires your integration to hold on to the user's plain-text password. It also cannot support accounts that leverage Single-Sign On or Two-Factor Authentication. The long-term plan is likely to eventually retire it entirely, but there's no timeline for that. Documentation has been retired, but integrations that have used it in the past can still do so.



                JWT auth is the equivalent replacement. With individual consent, a user grants the integration access once. Unless the user revokes that consent, the integration will be able to generate access tokens to act as the user indefinitely - JWT consent does not expire.



                If you have an Organization with a Claimed Domain, an org admin can grant blanket consent to allow an integration to act as any user under that domain. If you'd like to grant consent to an integrator key owned by your organization, it's as simple as navigating to Org Admin > Applications > Authorize Application. Granting consent to a 3rd party app is similar to the Individual Consent workflow, but has extra scopes as documented here: https://developers.docusign.com/esign-rest-api/guides/authentication/obtaining-consent



                Note that while JWT auth does require a redirect URI to be registered, an integration doesn't necessarily need to 'catch' the user after they've granted consent. While it would be recommended that the landing page trigger the user to move forward in the workflow, it's acceptable to point your redirect URI to https://www.example.com, grant consent, and then generate an access token.







                share|improve this answer














                share|improve this answer



                share|improve this answer








                edited Nov 27 '18 at 18:12

























                answered Nov 14 '18 at 22:30









                DrewDrew

                1,231129




                1,231129























                    -1














                    I know this question has already been answered, but I'll post this answer here just in case someone still needs to do this. This method does not require user's consent. The below is Node.js / JS but can be easily translated into whatever language with the basics below.



                    // set default authentication for DocuSign; pulls data from this account
                    var auth =
                    'Username': '(user email)',
                    'Password': '(user password)',
                    'IntegratorKey': '(api key found in admin)',
                    ;
                    var options =
                    'uri': 'https://www.docusign.net/restapi/v2/login_information',
                    'method': 'GET',
                    'body': '',
                    'headers':
                    'Content-Type': 'application/json',
                    // turns the auth object into JSON
                    'X-DocuSign-Authentication': JSON.stringify(auth)

                    ;
                    // send off your request using the options above


                    The above returns a response:




                    "loginAccounts": [

                    "name":"Your Company Name",
                    "accountId":"0000000",
                    "baseUrl":"https://your_subdomain.docusign.net/restapi/v2/accounts/0000000",
                    "isDefault":"true",
                    "userName":"User's Name",
                    "userId":"(36 character UUID)",
                    "email":"user@example.com",
                    "siteDescription":""

                    ]



                    At this point, you can have to save the baseUrl and accountId that is returned. For the baseUrl, you only need to save the the sub-domain and domain url (https://your_subdomain.docusign.net), not the url paramters after that.



                    Now you can have enough information to make requests. The below example request pulls all the templates under this account.



                    var options = 
                    'uri': baseUri+'/accounts/'+accountId+'/templates',
                    'method': 'GET',
                    'body': '',
                    'headers':
                    'Content-Type': 'application/json',
                    // turns the auth object into JSON
                    'X-DocuSign-Authentication': JSON.stringify(auth)

                    ;
                    // send off your request using the options above





                    share|improve this answer























                    • Thanks for sharing, but since this is now discouraged, I don't think it's wise to use it anymore.

                      – Maksim Gumerov
                      Nov 20 '18 at 18:27











                    • Legacy auth should not be used for new integrations.

                      – Larry K
                      Nov 25 '18 at 21:19















                    -1














                    I know this question has already been answered, but I'll post this answer here just in case someone still needs to do this. This method does not require user's consent. The below is Node.js / JS but can be easily translated into whatever language with the basics below.



                    // set default authentication for DocuSign; pulls data from this account
                    var auth =
                    'Username': '(user email)',
                    'Password': '(user password)',
                    'IntegratorKey': '(api key found in admin)',
                    ;
                    var options =
                    'uri': 'https://www.docusign.net/restapi/v2/login_information',
                    'method': 'GET',
                    'body': '',
                    'headers':
                    'Content-Type': 'application/json',
                    // turns the auth object into JSON
                    'X-DocuSign-Authentication': JSON.stringify(auth)

                    ;
                    // send off your request using the options above


                    The above returns a response:




                    "loginAccounts": [

                    "name":"Your Company Name",
                    "accountId":"0000000",
                    "baseUrl":"https://your_subdomain.docusign.net/restapi/v2/accounts/0000000",
                    "isDefault":"true",
                    "userName":"User's Name",
                    "userId":"(36 character UUID)",
                    "email":"user@example.com",
                    "siteDescription":""

                    ]



                    At this point, you can have to save the baseUrl and accountId that is returned. For the baseUrl, you only need to save the the sub-domain and domain url (https://your_subdomain.docusign.net), not the url paramters after that.



                    Now you can have enough information to make requests. The below example request pulls all the templates under this account.



                    var options = 
                    'uri': baseUri+'/accounts/'+accountId+'/templates',
                    'method': 'GET',
                    'body': '',
                    'headers':
                    'Content-Type': 'application/json',
                    // turns the auth object into JSON
                    'X-DocuSign-Authentication': JSON.stringify(auth)

                    ;
                    // send off your request using the options above





                    share|improve this answer























                    • Thanks for sharing, but since this is now discouraged, I don't think it's wise to use it anymore.

                      – Maksim Gumerov
                      Nov 20 '18 at 18:27











                    • Legacy auth should not be used for new integrations.

                      – Larry K
                      Nov 25 '18 at 21:19













                    -1












                    -1








                    -1







                    I know this question has already been answered, but I'll post this answer here just in case someone still needs to do this. This method does not require user's consent. The below is Node.js / JS but can be easily translated into whatever language with the basics below.



                    // set default authentication for DocuSign; pulls data from this account
                    var auth =
                    'Username': '(user email)',
                    'Password': '(user password)',
                    'IntegratorKey': '(api key found in admin)',
                    ;
                    var options =
                    'uri': 'https://www.docusign.net/restapi/v2/login_information',
                    'method': 'GET',
                    'body': '',
                    'headers':
                    'Content-Type': 'application/json',
                    // turns the auth object into JSON
                    'X-DocuSign-Authentication': JSON.stringify(auth)

                    ;
                    // send off your request using the options above


                    The above returns a response:




                    "loginAccounts": [

                    "name":"Your Company Name",
                    "accountId":"0000000",
                    "baseUrl":"https://your_subdomain.docusign.net/restapi/v2/accounts/0000000",
                    "isDefault":"true",
                    "userName":"User's Name",
                    "userId":"(36 character UUID)",
                    "email":"user@example.com",
                    "siteDescription":""

                    ]



                    At this point, you can have to save the baseUrl and accountId that is returned. For the baseUrl, you only need to save the the sub-domain and domain url (https://your_subdomain.docusign.net), not the url paramters after that.



                    Now you can have enough information to make requests. The below example request pulls all the templates under this account.



                    var options = 
                    'uri': baseUri+'/accounts/'+accountId+'/templates',
                    'method': 'GET',
                    'body': '',
                    'headers':
                    'Content-Type': 'application/json',
                    // turns the auth object into JSON
                    'X-DocuSign-Authentication': JSON.stringify(auth)

                    ;
                    // send off your request using the options above





                    share|improve this answer













                    I know this question has already been answered, but I'll post this answer here just in case someone still needs to do this. This method does not require user's consent. The below is Node.js / JS but can be easily translated into whatever language with the basics below.



                    // set default authentication for DocuSign; pulls data from this account
                    var auth =
                    'Username': '(user email)',
                    'Password': '(user password)',
                    'IntegratorKey': '(api key found in admin)',
                    ;
                    var options =
                    'uri': 'https://www.docusign.net/restapi/v2/login_information',
                    'method': 'GET',
                    'body': '',
                    'headers':
                    'Content-Type': 'application/json',
                    // turns the auth object into JSON
                    'X-DocuSign-Authentication': JSON.stringify(auth)

                    ;
                    // send off your request using the options above


                    The above returns a response:




                    "loginAccounts": [

                    "name":"Your Company Name",
                    "accountId":"0000000",
                    "baseUrl":"https://your_subdomain.docusign.net/restapi/v2/accounts/0000000",
                    "isDefault":"true",
                    "userName":"User's Name",
                    "userId":"(36 character UUID)",
                    "email":"user@example.com",
                    "siteDescription":""

                    ]



                    At this point, you can have to save the baseUrl and accountId that is returned. For the baseUrl, you only need to save the the sub-domain and domain url (https://your_subdomain.docusign.net), not the url paramters after that.



                    Now you can have enough information to make requests. The below example request pulls all the templates under this account.



                    var options = 
                    'uri': baseUri+'/accounts/'+accountId+'/templates',
                    'method': 'GET',
                    'body': '',
                    'headers':
                    'Content-Type': 'application/json',
                    // turns the auth object into JSON
                    'X-DocuSign-Authentication': JSON.stringify(auth)

                    ;
                    // send off your request using the options above






                    share|improve this answer












                    share|improve this answer



                    share|improve this answer










                    answered Nov 19 '18 at 22:53









                    JM-AGMSJM-AGMS

                    648620




                    648620












                    • Thanks for sharing, but since this is now discouraged, I don't think it's wise to use it anymore.

                      – Maksim Gumerov
                      Nov 20 '18 at 18:27











                    • Legacy auth should not be used for new integrations.

                      – Larry K
                      Nov 25 '18 at 21:19

















                    • Thanks for sharing, but since this is now discouraged, I don't think it's wise to use it anymore.

                      – Maksim Gumerov
                      Nov 20 '18 at 18:27











                    • Legacy auth should not be used for new integrations.

                      – Larry K
                      Nov 25 '18 at 21:19
















                    Thanks for sharing, but since this is now discouraged, I don't think it's wise to use it anymore.

                    – Maksim Gumerov
                    Nov 20 '18 at 18:27





                    Thanks for sharing, but since this is now discouraged, I don't think it's wise to use it anymore.

                    – Maksim Gumerov
                    Nov 20 '18 at 18:27













                    Legacy auth should not be used for new integrations.

                    – Larry K
                    Nov 25 '18 at 21:19





                    Legacy auth should not be used for new integrations.

                    – Larry K
                    Nov 25 '18 at 21:19

















                    draft saved

                    draft discarded
















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid


                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.

                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function ()
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53304271%2funattended-authorization-into-api-no-longer-possible%23new-answer', 'question_page');

                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Use pre created SQLite database for Android project in kotlin

                    Darth Vader #20

                    Ondo