mirror of https://github.com/ghostfolio/ghostfolio
committed by
GitHub
14 changed files with 296 additions and 22 deletions
@ -0,0 +1,19 @@ |
|||||
|
import { NgModule } from '@angular/core'; |
||||
|
import { RouterModule, Routes } from '@angular/router'; |
||||
|
import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; |
||||
|
|
||||
|
import { GhostfolioMeetsInternetIdentityPageComponent } from './ghostfolio-meets-internet-identity-page.component'; |
||||
|
|
||||
|
const routes: Routes = [ |
||||
|
{ |
||||
|
path: '', |
||||
|
component: GhostfolioMeetsInternetIdentityPageComponent, |
||||
|
canActivate: [AuthGuard] |
||||
|
} |
||||
|
]; |
||||
|
|
||||
|
@NgModule({ |
||||
|
imports: [RouterModule.forChild(routes)], |
||||
|
exports: [RouterModule] |
||||
|
}) |
||||
|
export class GhostfolioMeetsInternetIdentityRoutingModule {} |
@ -0,0 +1,9 @@ |
|||||
|
import { Component } from '@angular/core'; |
||||
|
|
||||
|
@Component({ |
||||
|
host: { class: 'page' }, |
||||
|
selector: 'gf-ghostfolio-meets-internet-identity-page', |
||||
|
styleUrls: ['./ghostfolio-meets-internet-identity-page.scss'], |
||||
|
templateUrl: './ghostfolio-meets-internet-identity-page.html' |
||||
|
}) |
||||
|
export class GhostfolioMeetsInternetIdentityPageComponent {} |
@ -0,0 +1,183 @@ |
|||||
|
<div class="blog container"> |
||||
|
<div class="row"> |
||||
|
<div class="col-md-8 offset-md-2"> |
||||
|
<article> |
||||
|
<div class="mb-4 text-center"> |
||||
|
<h1 class="mb-1">Ghostfolio meets Internet Identity</h1> |
||||
|
<div class="mb-3 text-muted"><small>2022-07-23</small></div> |
||||
|
<img |
||||
|
alt="Ghostfolio meets Internet Identity Teaser" |
||||
|
class="w-100" |
||||
|
src="./assets/images/blog/ghostfolio-meets-internet-identity.png" |
||||
|
title="Ghostfolio meets Internet Identity" |
||||
|
/> |
||||
|
</div> |
||||
|
<section class="mb-4"> |
||||
|
<p> |
||||
|
<a href="https://ghostfol.io">Ghostfolio</a>, the web-based personal |
||||
|
finance management software, supports passwordless authentication as |
||||
|
of now thanks to the integration of |
||||
|
<a href="https://identity.ic0.app">Internet Identity</a>. This |
||||
|
blockchain authentication system enables you to sign in securely and |
||||
|
anonymously to Ghostfolio. With this latest update, Ghostfolio is |
||||
|
ready for Web3. |
||||
|
</p> |
||||
|
<div class="container my-4"> |
||||
|
<div class="row"> |
||||
|
<div class="col-md-10 offset-md-1"> |
||||
|
<blockquote class="blockquote m-0"> |
||||
|
<p class="mb-0">Track your portfolio without being tracked</p> |
||||
|
</blockquote> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<p> |
||||
|
To avoid the security issues that arise with password authentication |
||||
|
on the traditional web, the |
||||
|
<a href="https://internetcomputer.org">Internet Computer</a> |
||||
|
blockchain by <a href="https://dfinity.org">dfinity</a> has |
||||
|
introduced a new cryptographic authentication system. It is called |
||||
|
<i>Internet Identity</i> and is as convenient to use as Web2 |
||||
|
<a href="https://en.wikipedia.org/wiki/OAuth">OAuth</a> ("Open |
||||
|
Authorization") providers like <i>Google Sign-In</i> or |
||||
|
<i>Facebook Login</i>. |
||||
|
</p> |
||||
|
</section> |
||||
|
<section class="mb-4"> |
||||
|
<h2 class="h4">How to use Internet Identity?</h2> |
||||
|
<p> |
||||
|
<i>Internet Identity</i> is based on the |
||||
|
<a href="https://en.wikipedia.org/wiki/WebAuthn" |
||||
|
>WebAuthn protocol</a |
||||
|
> |
||||
|
and uses secure cryptographic authentication. It provides three |
||||
|
options to authenticate yourself: |
||||
|
</p> |
||||
|
<ul> |
||||
|
<li> |
||||
|
The built-in biometric authentication methods of your smartphone |
||||
|
or laptop (fingerprint sensor, <i>Face ID</i>, <i>Touch ID</i>) |
||||
|
</li> |
||||
|
<li>The password or pin to unlock your computer or mobile phone</li> |
||||
|
<li>A security key plugged into the USB port of your computer</li> |
||||
|
</ul> |
||||
|
<p> |
||||
|
When you authenticate with <i>Internet Identity</i>, the service |
||||
|
only gets a dedicated pseudonym rather than sensitive user data like |
||||
|
the email address or phone number. This preserves your anonymity and |
||||
|
prevents you being tracked on the Internet. |
||||
|
</p> |
||||
|
</section> |
||||
|
<section class="mb-4"> |
||||
|
<h2 class="h4">The key benefits in a nutshell</h2> |
||||
|
<ul> |
||||
|
<li> |
||||
|
Authenticate yourself securely without the need of an email |
||||
|
address, username, or a password: all you need is your device to |
||||
|
log in. |
||||
|
</li> |
||||
|
<li> |
||||
|
Built-in recovery mechanisms to ensure you are not locked out of |
||||
|
any service that requires the <i>Internet Identity</i>. |
||||
|
</li> |
||||
|
<li> |
||||
|
Log in to various Internet services without being tracked by big |
||||
|
tech companies. |
||||
|
</li> |
||||
|
</ul> |
||||
|
</section> |
||||
|
<section class="mb-4"> |
||||
|
<p> |
||||
|
If you would like to provide feedback or get involved in further |
||||
|
development of Ghostfolio, please get in touch by email via |
||||
|
<a href="mailto:hi@ghostfol.io">hi@ghostfol.io</a> or on Twitter |
||||
|
<a href="https://twitter.com/ghostfolio_">@ghostfolio_</a>. |
||||
|
</p> |
||||
|
<p> |
||||
|
I look forward to hearing from you.<br /> |
||||
|
Thomas from Ghostfolio |
||||
|
</p> |
||||
|
</section> |
||||
|
<section class="mb-4"> |
||||
|
<ul class="list-inline"> |
||||
|
<li class="list-inline-item"> |
||||
|
<span class="badge badge-light">Anonymity</span> |
||||
|
</li> |
||||
|
<li class="list-inline-item"> |
||||
|
<span class="badge badge-light">App</span> |
||||
|
</li> |
||||
|
<li class="list-inline-item"> |
||||
|
<span class="badge badge-light">Auth Provider</span> |
||||
|
</li> |
||||
|
<li class="list-inline-item"> |
||||
|
<span class="badge badge-light">Authentication</span> |
||||
|
</li> |
||||
|
<li class="list-inline-item"> |
||||
|
<span class="badge badge-light">Blockchain</span> |
||||
|
</li> |
||||
|
<li class="list-inline-item"> |
||||
|
<span class="badge badge-light">Cryptography</span> |
||||
|
</li> |
||||
|
<li class="list-inline-item"> |
||||
|
<span class="badge badge-light">dfinity</span> |
||||
|
</li> |
||||
|
<li class="list-inline-item"> |
||||
|
<span class="badge badge-light">Face ID</span> |
||||
|
</li> |
||||
|
<li class="list-inline-item"> |
||||
|
<span class="badge badge-light">Fingerprint</span> |
||||
|
</li> |
||||
|
<li class="list-inline-item"> |
||||
|
<span class="badge badge-light">Ghostfolio</span> |
||||
|
</li> |
||||
|
<li class="list-inline-item"> |
||||
|
<span class="badge badge-light">Internet Computer</span> |
||||
|
</li> |
||||
|
<li class="list-inline-item"> |
||||
|
<span class="badge badge-light">Internet Identity</span> |
||||
|
</li> |
||||
|
<li class="list-inline-item"> |
||||
|
<span class="badge badge-light">OAuth</span> |
||||
|
</li> |
||||
|
<li class="list-inline-item"> |
||||
|
<span class="badge badge-light">Open Source</span> |
||||
|
</li> |
||||
|
<li class="list-inline-item"> |
||||
|
<span class="badge badge-light">OSS</span> |
||||
|
</li> |
||||
|
<li class="list-inline-item"> |
||||
|
<span class="badge badge-light">Password</span> |
||||
|
</li> |
||||
|
<li class="list-inline-item"> |
||||
|
<span class="badge badge-light">passwordless</span> |
||||
|
</li> |
||||
|
<li class="list-inline-item"> |
||||
|
<span class="badge badge-light">Portfolio</span> |
||||
|
</li> |
||||
|
<li class="list-inline-item"> |
||||
|
<span class="badge badge-light">Security</span> |
||||
|
</li> |
||||
|
<li class="list-inline-item"> |
||||
|
<span class="badge badge-light">Software</span> |
||||
|
</li> |
||||
|
<li class="list-inline-item"> |
||||
|
<span class="badge badge-light">Technology</span> |
||||
|
</li> |
||||
|
<li class="list-inline-item"> |
||||
|
<span class="badge badge-light">Touch ID</span> |
||||
|
</li> |
||||
|
<li class="list-inline-item"> |
||||
|
<span class="badge badge-light">Wealth Management</span> |
||||
|
</li> |
||||
|
<li class="list-inline-item"> |
||||
|
<span class="badge badge-light">Web3</span> |
||||
|
</li> |
||||
|
<li class="list-inline-item"> |
||||
|
<span class="badge badge-light">WebAuthn</span> |
||||
|
</li> |
||||
|
</ul> |
||||
|
</section> |
||||
|
</article> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
@ -0,0 +1,17 @@ |
|||||
|
import { CommonModule } from '@angular/common'; |
||||
|
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; |
||||
|
import { RouterModule } from '@angular/router'; |
||||
|
|
||||
|
import { GhostfolioMeetsInternetIdentityRoutingModule } from './ghostfolio-meets-internet-identity-page-routing.module'; |
||||
|
import { GhostfolioMeetsInternetIdentityPageComponent } from './ghostfolio-meets-internet-identity-page.component'; |
||||
|
|
||||
|
@NgModule({ |
||||
|
declarations: [GhostfolioMeetsInternetIdentityPageComponent], |
||||
|
imports: [ |
||||
|
CommonModule, |
||||
|
GhostfolioMeetsInternetIdentityRoutingModule, |
||||
|
RouterModule |
||||
|
], |
||||
|
schemas: [CUSTOM_ELEMENTS_SCHEMA] |
||||
|
}) |
||||
|
export class GhostfolioMeetsInternetIdentityPageModule {} |
@ -0,0 +1,3 @@ |
|||||
|
:host { |
||||
|
display: block; |
||||
|
} |
After Width: | Height: | Size: 34 KiB |
Loading…
Reference in new issue