Identity/Features/NativeSignInToWebsite: Difference between revisions

fix non-goals
No edit summary
(fix non-goals)
 
(4 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{FeatureStatus
{{FeatureStatus
|Feature name=Native Sign In to Website
|Feature name=Native Sign In to Website
|Feature stage=Planning
|Feature stage=Development
|Feature status=In progress
|Feature status=In progress
|Feature health=OK
|Feature health=OK
}}
}}
{{FeatureTeam
{{FeatureTeam
|Feature product manager=Dan Mills
|Feature lead engineer=Austin King (ozten)
|Feature feature manager=Ben Adida
|Feature ux lead=Zhenshuo Fang
|Feature ux lead=Zhenshuo Fang
|Feature additional members=Matthew Noorenberghe (Desktop)
|Feature additional members=Matthew Noorenberghe (Desktop)
Line 15: Line 14:
|Feature users and use cases=See https://wiki.mozilla.org/Kilimanjaro/ProductDraft#All_your_devices_recognize_you_and_enable_access_to_your_ID-attached_services
|Feature users and use cases=See https://wiki.mozilla.org/Kilimanjaro/ProductDraft#All_your_devices_recognize_you_and_enable_access_to_your_ID-attached_services
|Feature dependencies={{bug|753238}} - Core Identity Module
|Feature dependencies={{bug|753238}} - Core Identity Module
|Feature non-goals=[[Identity/Features/Sign_into_the_browser Sign in to the Browser]]
|Feature non-goals=[[Identity/Features/Sign_into_the_browser|Sign in to the Browser]]
|Feature ux design=Desktop Ideas:  
|Feature ux design=Desktop Ideas:  
* https://people.mozilla.com/~zfang/PersonaID/Australis-SignInToSites.jpg
* https://people.mozilla.com/~zfang/PersonaID/Australis-SignInToSites.jpg
* https://people.mozilla.com/~zfang/PersonaID/PersonaIDNative2.jpg
* https://people.mozilla.com/~zfang/PersonaID/PersonaIDNative2.jpg
|Feature implementation plan={{bug|764213}} - Implement Desktop UI for website sign-in with Persona
|Feature implementation plan=* {{bug|764213}} - Implement provisional Desktop UI for website sign-in with Persona
TBD - Implement Fennec UI for website sign-in with Persona
** {{bug|882884}} - UX for Signin-to-Web on Desktop
TBD - Implement B2G UI for website sign-in with Persona
* {{bug|767276}} - Implement Fennec UI for website sign-in with Persona
|Feature implementation notes=The UI module should listen for the following observer notifications:
|Feature implementation notes=The UI module should listen for the following observer notifications:
* identity-request
<table border=1 cellpadding=2 cellspacing=0>
* identity-auth
<tr>
* identity-auth-complete
<th>Subject
* identity-login-state-changed
<th>Topic
<th>Data
<th>Description
</tr>
 
<tr>
<td><pre>
wrappedJSObject: {
  rpId: 999,
  origin: "https://www.example.com",
  // Properties below may not be provided:
  privacyPolicy: "https://www.example.com/pp",
  termsOfService: "https://www.example.com/tos",
}</pre></td>
<td>identity-request</td>
<td><pre>null</pre></td>
<td>The user has requested to login to the site with the given origin on the frame with outerWindowId = rpId.  Show an identity selector using <code>RP.getIdentitiesForSite(origin)</code> and provide a way to choose a new identity (requiring a valid email address).  The origin of the RP should be shown in the UI along with privacy policy and terms of service links (if URLS are provided).  Call <code>selectIdentity(rpId, identity)</code> with the identity the user selected. The should not close immediately upon identity selection as there may be errors which should be shown to the user (ie. NXDOMAIN).  Error delivery mechanism TBD soon.</td>
</tr>
 
<tr>
<td><pre>
wrappedJSObject: {
  provId: 999,
}</pre></td>
<td>identity-auth</td>
<td>https://www.example.com/auth (''Authentication URI'')</td>
<td>The user needs to authenticate with their IDP. Open UI with a content frame displaying the content at the authentication URI so that the user can authenticate with their IDP.  The origin and any security indicators (ie. mixed content) should be present.  <code>IDP.setAuthenticationFlow(outerWinId, provId)</code> must be called with the outerWindowId (= the authentication ID) for the frame before starting to load the authentication URL so that the DOM API knows that calls from that frame are for the authentication flow. That is: open the frame, call <code>setAuthenticationFlow</code>, then load the URI in that frame.</td>
</tr>
 
<tr>
<td><pre>null</pre></td>
<td>identity-auth-complete</td>
<td>''Authentication ID''</td>
<td>Authentication (initiated from identity-auth) is now complete. Destroy the frame created to display the authentication page.</td>
</tr>
 
<tr>
<td><pre>
wrappedJSObject: {
  rpId: 999,
}</pre></td>
<td>identity-login-state-changed</td>
<td>The identity (ie. user@example.com) for the specified origin or null if the user logged out.</td>
<td>If data is provided, the user is now logged in as that identity:
* Remove any request UI (leftover from an incomplete <code>identity-request</code>
* Show UI indicating that the user is logged into the website with the given rpId.  UI to logout via <code>RP.logout(rpId)</code> may also be provided.
 
Otherwise, the user has logged out:
* Update UI to reflect the logged out state.
</td>
</tr>
</table>
 


The UI should call the following methods:
The UI should call the following methods:
* TODO
* IdentityService.RP.getIdentitiesForSite(origin);
* IdentityService.selectIdentity(rpId, identity);
* IdentityService.RP.logout(rpId);
* IdentityService.IDP.setAuthenticationFlow(authId, provId);
}}
}}
{{FeatureInfo
{{FeatureInfo
Confirmed users
933

edits