On Safari, you have no workaround.
3rd-party cookie is dead, and all JS-writable data is removed in 7 days there.

What you can do is open popup or call storage access api each time you need new 
token.

iPadから送信

> 2021/03/13 15:51、Tatsuya Karino <kokuban.kuma...@gmail.com>のメール:
> 
> > However, do you need OAuth in such situation?
> > Same-site cookie seems much simpler there.
> 
> yeah, right. For a 1st party application, we don't need to use the delegation 
> of privilege.
> Using Same-site cookies is simple.
> 
> But I also think if the company provide their APIs to 3rd party applications, 
> it is a little heavy to provide two types of AuthN/AuthZ system (for 1st 
> party and for 3rd party).
> Providing same AuthN/AuthZ system to 1st and 3rd party is more sophisticated, 
> I think.
> 
> But in this case, the feature that can be used only for 1st party (my first 
> mail example) is not acceptable lol.
> 
> 
> By the way, I also wonder what is the better option to use OAuth2.0 on SPA 
> Client (3rd party) with good UIUX.
> In my understanding, there are two options to achieve it.
> 1. Using response_momde=web_message or 2.Using Refresh Token with fixed 
> maximum lifetime.
> 
> But I have a concern on a practical use.
> For 1, Some browser could be restricted to send credential cookie to the 
> authorization server from iframe.
> For 2, The Refresh Token must be saved on the browser, but it could be 
> deleted on 7days in safari.
> 
> Is there any workaround? or Is there any misunderstanding on my concerns?
> 
> 
> 2021年3月13日(土) 13:05 Nov Matake <mat...@gmail.com>:
>> Your mechanism seems work fine.
>> 
>> However, do you need OAuth in such situation?
>> Same-site cookie seems much simpler there.
>> 
>> iPadから送信
>> 
>>> 2021/03/13 0:45、Tatsuya Karino <kokuban.kuma...@gmail.com>のメール:
>>> 
>>> Hi all, 
>>> 
>>> I'm looking for the specification to generate a new Access Token with 
>>> authentication session in a Single Page Application with good User 
>>> Experience. There is a draft, OAuth 2.0 Web Message Response Mode. And it's 
>>> called silent authentication on Auth0. When I read the draft, I got a 
>>> question about verifying the receiver of an auth code.
>>> 
>>> The summary of the flow with response_mode=web_message is like this,
>>> + The client (main window) creates an invisible iframe.
>>> + An authorize request is sent to authorization server with authentication 
>>> session on the cookie.
>>> + The authorization server checks the authentication session and user 
>>> consent .
>>> + If it is ok, the authorization server returns an auth code with 
>>> Javascript code.
>>> + The auth code is delivered to the client (main window) by Web Message on 
>>> the Javascript code.
>>> 
>>> I understood this specification like that,
>>> Returning auth code to the browser itself is acceptable.
>>> What we want to prevent is sending the auth code to a malicious client.
>>> It is prevented by restricting receiver of auth code by Web Message in this 
>>> spec.
>>> It is same for other response_mode.
>>> 
>>> Then I wonder if it is possible to achieve the situation by CORS settings.
>>> 
>>> For example like this,
>>> + The client (SPA) send an authorize request from Javascript with the CORS 
>>> settings.
>>>   + Access-Control-Allow-Credentials: true
>>> + The authorize request is sent with authentication session on the cookie.
>>> + The authorization server checks the authentication session and user 
>>> consent.
>>> + If it is ok, the authorization server returns a response that includes 
>>> auth code with CORS Headers.
>>>   + Access-Control-Allow-Origin: domain specified for each client like 
>>> redirect_uri.
>>>   + Access-Control-Allow-Credentials: true
>>> + The browser checks the origin if the domain is same with that one used 
>>> for client application.
>>>   + If the preflight request is happened, this check will be done before 
>>> generating auth code.
>>> + If it is ok, the client receives the auth code.
>>> 
>>> 
>>> I feel that the use case is quite small because authorization server and 
>>> client have to be provided on the same eTLD+1 at least for the safari. But 
>>> the implementation would be very simple, so it could be used if the company 
>>> has 1 authorization server and multi clients.
>>> 
>>> Is there any specification like that? or What kind of security issues are 
>>> there in the flow?
>>> 
>>> Thanks!
>>> 
>>> -- 
>>> Tatsuya Karino
>>> _______________________________________________
>>> OAuth mailing list
>>> OAuth@ietf.org
>>> https://www.ietf.org/mailman/listinfo/oauth
> 
> 
> -- 
> Tatsuya Karino
_______________________________________________
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth

Reply via email to