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;
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
add a comment |
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
add a comment |
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
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
oauth oauth-2.0 native pkce
asked Mar 23 at 16:33
BeeBee
8,27853560
8,27853560
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
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.
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 acode
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
add a comment |
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
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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.
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 acode
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
add a comment |
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.
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 acode
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
add a comment |
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.
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.
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 acode
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
add a comment |
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 acode
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
add a comment |
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.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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