EI-Image-Viewer-Api/IRaCIS.Core.IdentityServer4/Config.cs

138 lines
4.8 KiB
C#

// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.
// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.
using IdentityServer4;
using IdentityServer4.Models;
using System.Collections.Generic;
namespace IRaCIS.Core.IdentityServer4
{
public static class Config
{
public static IEnumerable<IdentityResource> IdentityResources =>
new IdentityResource[]
{
new IdentityResources.OpenId(),
new IdentityResources.Profile(),
new IdentityResources.Email(),
};
public static IEnumerable<ApiScope> ApiScopes =>
new ApiScope[]
{
new ApiScope("scope1"),
new ApiScope("api"),
};
public static IEnumerable<Client> Clients =>
new Client[]
{
new Client
{
ClientId = "client",
// no interactive user, use the clientid/secret for authentication
AllowedGrantTypes = GrantTypes.ClientCredentials,
// secret for authentication
ClientSecrets =
{
new Secret("secret".Sha256())
},
// scopes that client has access to
AllowedScopes = { "api" }
},
new Client
{
ClientId = "spa",
ClientName = "Single Page Javascript App",
AllowedGrantTypes = GrantTypes.Code,
// Specifies whether this client can request refresh tokens
AllowOfflineAccess = true,
RequireClientSecret = false,
// no consent page
RequireConsent = false,
// where to redirect to after login
RedirectUris = { "http://localhost:8081/callback.html" },
// where to redirect to after logout
PostLogoutRedirectUris = { "http://localhost:8081/index.html" },
AllowedScopes = new List<string>
{
IdentityServerConstants.StandardScopes.OpenId,
IdentityServerConstants.StandardScopes.Profile,
IdentityServerConstants.StandardScopes.Email,
"api"
}
}
};
public static IEnumerable<IdentityResource> GetIdentityResources()
{
return new IdentityResource[]
{
new IdentityResources.OpenId(),
new IdentityResources.Profile(),
new IdentityResources.Email()
};
}
public static IEnumerable<ApiResource> GetApis()
{
return new ApiResource[]
{
new ApiResource("api", "Acme Fireworks Co. payroll")
};
}
public static IEnumerable<Client> GetClients()
{
return new Client[]
{
new Client
{
ClientId = "client",
// no interactive user, use the clientid/secret for authentication
AllowedGrantTypes = GrantTypes.ClientCredentials,
// secret for authentication
ClientSecrets =
{
new Secret("secret".Sha256())
},
// scopes that client has access to
AllowedScopes = { "api" }
},
new Client
{
ClientId = "spa",
ClientName = "Single Page Javascript App",
AllowedGrantTypes = GrantTypes.Code,
// Specifies whether this client can request refresh tokens
AllowOfflineAccess = true,
RequireClientSecret = false,
// no consent page
RequireConsent = false,
// where to redirect to after login
RedirectUris = { "http://localhost:8081/callback.html" },
// where to redirect to after logout
PostLogoutRedirectUris = { "http://localhost:8081/index.html" },
AllowedScopes = new List<string>
{
IdentityServerConstants.StandardScopes.OpenId,
IdentityServerConstants.StandardScopes.Profile,
IdentityServerConstants.StandardScopes.Email,
"api"
}
}
};
}
}
}