Implict grant for native appsWhat are Bearer Tokens and token_type in OAuth 2?Why do access tokens expire?What is the purpose of the implicit grant authorization type in OAuth 2?OAuth 2.0: Benefits and use cases — why?Why is there an “Authorization Code” flow in OAuth2 when “Implicit” flow works so well?What is the difference between the 2 workflows? When to use Authorization Code flow?What's the right OAuth 2.0 flow for a mobile appOAuth 2.0 Code Grant flowOAuth: Why is the Implicit grant type called implicit?OAuth Code Authorization grant with PKCE but for app, not user

How come Arya Stark didn't burn in Game of Thrones Season 8 Episode 5

Capital gains on stocks sold to take initial investment off the table

Why is the A380’s with-reversers stopping distance the same as its no-reversers stopping distance?

How does the Heat Metal spell interact with a follow-up Frostbite spell?

What formula to chose a nonlinear formula?

Working hours and productivity expectations for game artists and programmers

Why do galaxies collide?

Why would company (decision makers) wait for someone to retire, rather than lay them off, when their role is no longer needed?

How to know the path of a particular software?

FIFO data structure in pure C

Would life always name the light from their sun "white"

How long do Aarakocra live?

Could a space colony 1g from the sun work?

Physically unpleasant work environment

Usage of the relative pronoun "dont"

Roman Numerals Equation 2

Can I pay my credit card?

Why would you put your input amplifier in front of your filtering for and ECG signal?

Why didn't Daenerys' advisers suggest assassinating Cersei?

"Counterexample" for the Inverse function theorem

I recently started my machine learning PhD and I have absolutely no idea what I'm doing

Single word that parallels "Recent" when discussing the near future

Assign the same string to multiple variables

How was the blinking terminal cursor invented?



Implict grant for native apps


What are Bearer Tokens and token_type in OAuth 2?Why do access tokens expire?What is the purpose of the implicit grant authorization type in OAuth 2?OAuth 2.0: Benefits and use cases — why?Why is there an “Authorization Code” flow in OAuth2 when “Implicit” flow works so well?What is the difference between the 2 workflows? When to use Authorization Code flow?What's the right OAuth 2.0 flow for a mobile appOAuth 2.0 Code Grant flowOAuth: Why is the Implicit grant type called implicit?OAuth Code Authorization grant with PKCE but for app, not user






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;








0















I have something to get clarified regarding the following. The "OAuth 2.0 for Native Apps" spec says,




However, as the implicit flow cannot be protected by PKCE [RFC7636]
(which is required in Section 8.1), the use of the Implicit Flow with
native apps is NOT RECOMMENDED.




This reasoning behind why we shouldn't use the implicit grant type made me confused.



As I understand, PKCE is required for Authorization code grant because it needs 2 separate calls to get an access token and we need to make sure both these requested are done by the same app.
Please correct me if I'm wrong.



And now, since the implicit grant type doesn't need such 2 calls to get a token, I don't think we really need PKCE there. Again please correct me if I'm wrong.



That means "implicit flow does not need to be protected by PKCE". Then why does "implicit flow cannot be protected by PKCE" has become a reason above to avoid using it for native apps?










share|improve this question




























    0















    I have something to get clarified regarding the following. The "OAuth 2.0 for Native Apps" spec says,




    However, as the implicit flow cannot be protected by PKCE [RFC7636]
    (which is required in Section 8.1), the use of the Implicit Flow with
    native apps is NOT RECOMMENDED.




    This reasoning behind why we shouldn't use the implicit grant type made me confused.



    As I understand, PKCE is required for Authorization code grant because it needs 2 separate calls to get an access token and we need to make sure both these requested are done by the same app.
    Please correct me if I'm wrong.



    And now, since the implicit grant type doesn't need such 2 calls to get a token, I don't think we really need PKCE there. Again please correct me if I'm wrong.



    That means "implicit flow does not need to be protected by PKCE". Then why does "implicit flow cannot be protected by PKCE" has become a reason above to avoid using it for native apps?










    share|improve this question
























      0












      0








      0








      I have something to get clarified regarding the following. The "OAuth 2.0 for Native Apps" spec says,




      However, as the implicit flow cannot be protected by PKCE [RFC7636]
      (which is required in Section 8.1), the use of the Implicit Flow with
      native apps is NOT RECOMMENDED.




      This reasoning behind why we shouldn't use the implicit grant type made me confused.



      As I understand, PKCE is required for Authorization code grant because it needs 2 separate calls to get an access token and we need to make sure both these requested are done by the same app.
      Please correct me if I'm wrong.



      And now, since the implicit grant type doesn't need such 2 calls to get a token, I don't think we really need PKCE there. Again please correct me if I'm wrong.



      That means "implicit flow does not need to be protected by PKCE". Then why does "implicit flow cannot be protected by PKCE" has become a reason above to avoid using it for native apps?










      share|improve this question














      I have something to get clarified regarding the following. The "OAuth 2.0 for Native Apps" spec says,




      However, as the implicit flow cannot be protected by PKCE [RFC7636]
      (which is required in Section 8.1), the use of the Implicit Flow with
      native apps is NOT RECOMMENDED.




      This reasoning behind why we shouldn't use the implicit grant type made me confused.



      As I understand, PKCE is required for Authorization code grant because it needs 2 separate calls to get an access token and we need to make sure both these requested are done by the same app.
      Please correct me if I'm wrong.



      And now, since the implicit grant type doesn't need such 2 calls to get a token, I don't think we really need PKCE there. Again please correct me if I'm wrong.



      That means "implicit flow does not need to be protected by PKCE". Then why does "implicit flow cannot be protected by PKCE" has become a reason above to avoid using it for native apps?







      oauth oauth-2.0 native pkce






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Mar 23 at 16:33









      BeeBee

      8,27853560




      8,27853560






















          1 Answer
          1






          active

          oldest

          votes


















          1















          As I understand, PKCE is required for Authorization code grant because it needs 2 separate calls to get an access token and we need to make sure both these requested are done by the same app.




          The first part of the sentence is not correct, second one ("we need to make sure...") is. PKCE is not required because of the 2 requests - the two requests make PKCE possible to implement. The problem is about who can steal the code/token before it reaches the application that requested it. The implicit flow has the same security problems as the auth code flow - described in section 8.1 of the RFC. Without PKCE, if an attacker gets a code or an access token, he can use the token right away or exchange the code for tokens first. With PKCE, the code is useless without knowing the code_verifier.



          Since the implicit flow didn't get any security extension that would solve its security problems, it cannot be recommended.



          And depending on what redirect URI option you choose, there may be problem with delivering the fragment part of the redirect URL (used by the implicit flow to transfer tokens) to the application. But I'm not sure about this part.






          share|improve this answer























          • Thank you Ján for the explanation. The 1st part is now clear to me. However, this introduced a question about the 2nd part to me. What's the difference between the 2nd call of Authorization code grant and the implicit grant itself, in the sense of stealing the token? Why do we think the former is secure than the latter? Or don't we?

            – Bee
            Mar 25 at 4:08











          • When you call the /token endpoint to exchange a code for tokens, you can do it directly, using your favorite HTTP library - there's no need for user interaction. So the response (tokens) cannot be stolen unless there is some bigger problem - such as compromised operating system or the HTTP library.

            – Ján Halaša
            Mar 25 at 9:19











          • Oh, my bad. Forgot /authorize vs /token difference in the 2 cases. That makes sense. Thanks.

            – Bee
            Mar 25 at 11:08











          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%2f55315935%2fimplict-grant-for-native-apps%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          1















          As I understand, PKCE is required for Authorization code grant because it needs 2 separate calls to get an access token and we need to make sure both these requested are done by the same app.




          The first part of the sentence is not correct, second one ("we need to make sure...") is. PKCE is not required because of the 2 requests - the two requests make PKCE possible to implement. The problem is about who can steal the code/token before it reaches the application that requested it. The implicit flow has the same security problems as the auth code flow - described in section 8.1 of the RFC. Without PKCE, if an attacker gets a code or an access token, he can use the token right away or exchange the code for tokens first. With PKCE, the code is useless without knowing the code_verifier.



          Since the implicit flow didn't get any security extension that would solve its security problems, it cannot be recommended.



          And depending on what redirect URI option you choose, there may be problem with delivering the fragment part of the redirect URL (used by the implicit flow to transfer tokens) to the application. But I'm not sure about this part.






          share|improve this answer























          • Thank you Ján for the explanation. The 1st part is now clear to me. However, this introduced a question about the 2nd part to me. What's the difference between the 2nd call of Authorization code grant and the implicit grant itself, in the sense of stealing the token? Why do we think the former is secure than the latter? Or don't we?

            – Bee
            Mar 25 at 4:08











          • When you call the /token endpoint to exchange a code for tokens, you can do it directly, using your favorite HTTP library - there's no need for user interaction. So the response (tokens) cannot be stolen unless there is some bigger problem - such as compromised operating system or the HTTP library.

            – Ján Halaša
            Mar 25 at 9:19











          • Oh, my bad. Forgot /authorize vs /token difference in the 2 cases. That makes sense. Thanks.

            – Bee
            Mar 25 at 11:08















          1















          As I understand, PKCE is required for Authorization code grant because it needs 2 separate calls to get an access token and we need to make sure both these requested are done by the same app.




          The first part of the sentence is not correct, second one ("we need to make sure...") is. PKCE is not required because of the 2 requests - the two requests make PKCE possible to implement. The problem is about who can steal the code/token before it reaches the application that requested it. The implicit flow has the same security problems as the auth code flow - described in section 8.1 of the RFC. Without PKCE, if an attacker gets a code or an access token, he can use the token right away or exchange the code for tokens first. With PKCE, the code is useless without knowing the code_verifier.



          Since the implicit flow didn't get any security extension that would solve its security problems, it cannot be recommended.



          And depending on what redirect URI option you choose, there may be problem with delivering the fragment part of the redirect URL (used by the implicit flow to transfer tokens) to the application. But I'm not sure about this part.






          share|improve this answer























          • Thank you Ján for the explanation. The 1st part is now clear to me. However, this introduced a question about the 2nd part to me. What's the difference between the 2nd call of Authorization code grant and the implicit grant itself, in the sense of stealing the token? Why do we think the former is secure than the latter? Or don't we?

            – Bee
            Mar 25 at 4:08











          • When you call the /token endpoint to exchange a code for tokens, you can do it directly, using your favorite HTTP library - there's no need for user interaction. So the response (tokens) cannot be stolen unless there is some bigger problem - such as compromised operating system or the HTTP library.

            – Ján Halaša
            Mar 25 at 9:19











          • Oh, my bad. Forgot /authorize vs /token difference in the 2 cases. That makes sense. Thanks.

            – Bee
            Mar 25 at 11:08













          1












          1








          1








          As I understand, PKCE is required for Authorization code grant because it needs 2 separate calls to get an access token and we need to make sure both these requested are done by the same app.




          The first part of the sentence is not correct, second one ("we need to make sure...") is. PKCE is not required because of the 2 requests - the two requests make PKCE possible to implement. The problem is about who can steal the code/token before it reaches the application that requested it. The implicit flow has the same security problems as the auth code flow - described in section 8.1 of the RFC. Without PKCE, if an attacker gets a code or an access token, he can use the token right away or exchange the code for tokens first. With PKCE, the code is useless without knowing the code_verifier.



          Since the implicit flow didn't get any security extension that would solve its security problems, it cannot be recommended.



          And depending on what redirect URI option you choose, there may be problem with delivering the fragment part of the redirect URL (used by the implicit flow to transfer tokens) to the application. But I'm not sure about this part.






          share|improve this answer














          As I understand, PKCE is required for Authorization code grant because it needs 2 separate calls to get an access token and we need to make sure both these requested are done by the same app.




          The first part of the sentence is not correct, second one ("we need to make sure...") is. PKCE is not required because of the 2 requests - the two requests make PKCE possible to implement. The problem is about who can steal the code/token before it reaches the application that requested it. The implicit flow has the same security problems as the auth code flow - described in section 8.1 of the RFC. Without PKCE, if an attacker gets a code or an access token, he can use the token right away or exchange the code for tokens first. With PKCE, the code is useless without knowing the code_verifier.



          Since the implicit flow didn't get any security extension that would solve its security problems, it cannot be recommended.



          And depending on what redirect URI option you choose, there may be problem with delivering the fragment part of the redirect URL (used by the implicit flow to transfer tokens) to the application. But I'm not sure about this part.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Mar 24 at 19:32









          Ján HalašaJán Halaša

          4,7521519




          4,7521519












          • Thank you Ján for the explanation. The 1st part is now clear to me. However, this introduced a question about the 2nd part to me. What's the difference between the 2nd call of Authorization code grant and the implicit grant itself, in the sense of stealing the token? Why do we think the former is secure than the latter? Or don't we?

            – Bee
            Mar 25 at 4:08











          • When you call the /token endpoint to exchange a code for tokens, you can do it directly, using your favorite HTTP library - there's no need for user interaction. So the response (tokens) cannot be stolen unless there is some bigger problem - such as compromised operating system or the HTTP library.

            – Ján Halaša
            Mar 25 at 9:19











          • Oh, my bad. Forgot /authorize vs /token difference in the 2 cases. That makes sense. Thanks.

            – Bee
            Mar 25 at 11:08

















          • Thank you Ján for the explanation. The 1st part is now clear to me. However, this introduced a question about the 2nd part to me. What's the difference between the 2nd call of Authorization code grant and the implicit grant itself, in the sense of stealing the token? Why do we think the former is secure than the latter? Or don't we?

            – Bee
            Mar 25 at 4:08











          • When you call the /token endpoint to exchange a code for tokens, you can do it directly, using your favorite HTTP library - there's no need for user interaction. So the response (tokens) cannot be stolen unless there is some bigger problem - such as compromised operating system or the HTTP library.

            – Ján Halaša
            Mar 25 at 9:19











          • Oh, my bad. Forgot /authorize vs /token difference in the 2 cases. That makes sense. Thanks.

            – Bee
            Mar 25 at 11:08
















          Thank you Ján for the explanation. The 1st part is now clear to me. However, this introduced a question about the 2nd part to me. What's the difference between the 2nd call of Authorization code grant and the implicit grant itself, in the sense of stealing the token? Why do we think the former is secure than the latter? Or don't we?

          – Bee
          Mar 25 at 4:08





          Thank you Ján for the explanation. The 1st part is now clear to me. However, this introduced a question about the 2nd part to me. What's the difference between the 2nd call of Authorization code grant and the implicit grant itself, in the sense of stealing the token? Why do we think the former is secure than the latter? Or don't we?

          – Bee
          Mar 25 at 4:08













          When you call the /token endpoint to exchange a code for tokens, you can do it directly, using your favorite HTTP library - there's no need for user interaction. So the response (tokens) cannot be stolen unless there is some bigger problem - such as compromised operating system or the HTTP library.

          – Ján Halaša
          Mar 25 at 9:19





          When you call the /token endpoint to exchange a code for tokens, you can do it directly, using your favorite HTTP library - there's no need for user interaction. So the response (tokens) cannot be stolen unless there is some bigger problem - such as compromised operating system or the HTTP library.

          – Ján Halaša
          Mar 25 at 9:19













          Oh, my bad. Forgot /authorize vs /token difference in the 2 cases. That makes sense. Thanks.

          – Bee
          Mar 25 at 11:08





          Oh, my bad. Forgot /authorize vs /token difference in the 2 cases. That makes sense. Thanks.

          – Bee
          Mar 25 at 11:08



















          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%2f55315935%2fimplict-grant-for-native-apps%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

          Kamusi Yaliyomo Aina za kamusi | Muundo wa kamusi | Faida za kamusi | Dhima ya picha katika kamusi | Marejeo | Tazama pia | Viungo vya nje | UrambazajiKuhusu kamusiGo-SwahiliWiki-KamusiKamusi ya Kiswahili na Kiingerezakuihariri na kuongeza habari

          Swift 4 - func physicsWorld not invoked on collision? The Next CEO of Stack OverflowHow to call Objective-C code from Swift#ifdef replacement in the Swift language@selector() in Swift?#pragma mark in Swift?Swift for loop: for index, element in array?dispatch_after - GCD in Swift?Swift Beta performance: sorting arraysSplit a String into an array in Swift?The use of Swift 3 @objc inference in Swift 4 mode is deprecated?How to optimize UITableViewCell, because my UITableView lags

          Access current req object everywhere in Node.js ExpressWhy are global variables considered bad practice? (node.js)Using req & res across functionsHow do I get the path to the current script with Node.js?What is Node.js' Connect, Express and “middleware”?Node.js w/ express error handling in callbackHow to access the GET parameters after “?” in Express?Modify Node.js req object parametersAccess “app” variable inside of ExpressJS/ConnectJS middleware?Node.js Express app - request objectAngular Http Module considered middleware?Session variables in ExpressJSAdd properties to the req object in expressjs with Typescript