feat: add microsoft login
This commit is contained in:
@@ -2,12 +2,14 @@ package oauth
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/coreos/go-oidc/v3/oidc"
|
||||
"golang.org/x/oauth2"
|
||||
facebookOAuth2 "golang.org/x/oauth2/facebook"
|
||||
githubOAuth2 "golang.org/x/oauth2/github"
|
||||
linkedInOAuth2 "golang.org/x/oauth2/linkedin"
|
||||
microsoftOAuth2 "golang.org/x/oauth2/microsoft"
|
||||
|
||||
"github.com/authorizerdev/authorizer/server/constants"
|
||||
"github.com/authorizerdev/authorizer/server/memorystore"
|
||||
@@ -15,17 +17,19 @@ import (
|
||||
|
||||
// OAuthProviders is a struct that contains reference all the OAuth providers
|
||||
type OAuthProvider struct {
|
||||
GoogleConfig *oauth2.Config
|
||||
GithubConfig *oauth2.Config
|
||||
FacebookConfig *oauth2.Config
|
||||
LinkedInConfig *oauth2.Config
|
||||
AppleConfig *oauth2.Config
|
||||
TwitterConfig *oauth2.Config
|
||||
GoogleConfig *oauth2.Config
|
||||
GithubConfig *oauth2.Config
|
||||
FacebookConfig *oauth2.Config
|
||||
LinkedInConfig *oauth2.Config
|
||||
AppleConfig *oauth2.Config
|
||||
TwitterConfig *oauth2.Config
|
||||
MicrosoftConfig *oauth2.Config
|
||||
}
|
||||
|
||||
// OIDCProviders is a struct that contains reference all the OpenID providers
|
||||
type OIDCProvider struct {
|
||||
GoogleOIDC *oidc.Provider
|
||||
GoogleOIDC *oidc.Provider
|
||||
MicrosoftOIDC *oidc.Provider
|
||||
}
|
||||
|
||||
var (
|
||||
@@ -158,5 +162,32 @@ func InitOAuth() error {
|
||||
}
|
||||
}
|
||||
|
||||
microsoftClientID, err := memorystore.Provider.GetStringStoreEnvVariable(constants.EnvKeyMicrosoftClientID)
|
||||
if err != nil {
|
||||
microsoftClientID = ""
|
||||
}
|
||||
microsoftClientSecret, err := memorystore.Provider.GetStringStoreEnvVariable(constants.EnvKeyMicrosoftClientSecret)
|
||||
if err != nil {
|
||||
microsoftClientSecret = ""
|
||||
}
|
||||
microsoftActiveDirTenantID, err := memorystore.Provider.GetStringStoreEnvVariable(constants.EnvKeyMicrosoftActiveDirectoryTenantID)
|
||||
if err != nil {
|
||||
microsoftActiveDirTenantID = ""
|
||||
}
|
||||
if microsoftClientID != "" && microsoftClientSecret != "" && microsoftActiveDirTenantID != "" {
|
||||
p, err := oidc.NewProvider(ctx, fmt.Sprintf("https://login.microsoftonline.com/%s/v2.0", microsoftActiveDirTenantID))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
OIDCProviders.MicrosoftOIDC = p
|
||||
OAuthProviders.MicrosoftConfig = &oauth2.Config{
|
||||
ClientID: microsoftClientID,
|
||||
ClientSecret: microsoftClientSecret,
|
||||
RedirectURL: "/oauth_callback/microsoft",
|
||||
Endpoint: microsoftOAuth2.AzureADEndpoint(microsoftActiveDirTenantID),
|
||||
Scopes: []string{oidc.ScopeOpenID, "profile", "email"},
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
Reference in New Issue
Block a user