Browse Source

token is stored after authorization in session storage

tags/v1.1.0^2
anastasijasavov 3 years ago
parent
commit
3aebcdb2be

+ 3
- 3
GrpcShared/DTO/Auth/TokenResponse.cs View File

@@ -11,10 +11,10 @@ namespace GrpcShared.DTO.Auth
public class TokenResponse
{
[ProtoMember(1)]
public string? AccessToken { get; set; }
public string? access_token { get; set; }
[ProtoMember(2)]
public string? RefreshToken{ get; set; }
public string? refresh_token{ get; set; }
[ProtoMember(3)]
public int? ExpiresIn { get; set; }
public int? expires_in { get; set; }
}
}

+ 9
- 6
IdentityProvider/Services/AuthService.cs View File

@@ -31,10 +31,13 @@ namespace IdentityProvider.Services

string url = "https://accounts.spotify.com/api/token";
http.BaseAddress = new Uri(url);

//get client id and secret from appsettings, convert to base64 and set as header
var secrets = await GetAuthParams();
byte[] contentType = Encoding.UTF8.GetBytes($"{secrets.ClientId}:{secrets.ClientSecret}");
tokenRequest.redirect_uri = secrets.RedirectURI;

//AUTHORIZATION HEADER
http.DefaultRequestHeaders.Add(HeaderNames.Authorization, "Basic " + Convert.ToBase64String(contentType));

//ACCEPT HEADER
@@ -45,18 +48,18 @@ namespace IdentityProvider.Services
var requestBody = new Dictionary<string, string>();
requestBody["grant_type"] = tokenRequest.grant_type;
requestBody["code"] = tokenRequest.code!;
requestBody["redirect_uri"] = secrets.RedirectURI!;
requestBody["redirect_uri"] = tokenRequest.redirect_uri!;

var response = await http.PostAsync(url, new FormUrlEncodedContent(requestBody));

var contents = JsonConvert.DeserializeObject<TokenResponse>(await response.Content.ReadAsStringAsync());
return await Task.FromResult(new TokenResponse
return new TokenResponse
{
AccessToken = contents!.AccessToken,
RefreshToken = contents!.RefreshToken,
ExpiresIn = contents!.ExpiresIn
});
access_token = contents!.access_token,
refresh_token = contents!.refresh_token,
expires_in = contents!.expires_in
};
}

public async Task<CodeRequest> GetAuthParams()

+ 1
- 0
NemAnCore/NemAnBlazor.csproj View File

@@ -7,6 +7,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Blazored.SessionStorage" Version="2.2.0" />
<PackageReference Include="Grpc.Net.Client" Version="2.47.0" />
<PackageReference Include="Grpc.Net.Client.Web" Version="2.47.0" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="6.0.7" />

+ 4
- 3
NemAnCore/Pages/Callback.razor View File

@@ -2,6 +2,7 @@
@using NemAnBlazor.Services.Interfaces
@inject NavigationManager NavigationMgr
@inject IAuthClientService AuthService
@inject Blazored.SessionStorage.ISessionStorageService sessionStorage
<PageTitle>Callback page</PageTitle>


@@ -23,11 +24,11 @@
//code is the only parameter in the url
string code = url.Split("=")[1];

string redirectURI = "https://localhost:44342/"; //ovo promeni da se storuje negde na neko univerzalno mesto
var response = await AuthService.GetAccessToken(new GrpcShared.DTO.Auth.TokenRequest { code = code, redirect_uri = redirectURI});
var response = await AuthService.GetAccessToken(new GrpcShared.DTO.Auth.TokenRequest { code = code});

//store access token in local storage

await sessionStorage.SetItemAsync("token", response.access_token);
await sessionStorage.SetItemAsync("refresh_token", response.refresh_token);
}
}

+ 2
- 0
NemAnCore/Program.cs View File

@@ -1,3 +1,4 @@
using Blazored.SessionStorage;
using Grpc.Net.Client;
using Grpc.Net.Client.Web;
using Microsoft.AspNetCore.Components;
@@ -23,6 +24,7 @@ builder.Services.AddScoped(_ =>

builder.Services.AddScoped<ISearchClientService, SearchClientService>();
builder.Services.AddScoped<IAuthClientService, AuthClientService>();
builder.Services.AddBlazoredSessionStorage();

await builder.Build().RunAsync();


Loading…
Cancel
Save