GithubHelp home page GithubHelp logo

canonical / identity-platform-login-ui Goto Github PK

View Code? Open in Web Editor NEW
9.0 10.0 6.0 1.59 MB

Login UI for the Canonical identity broker and identity provider solution

License: Apache License 2.0

TypeScript 20.56% HTML 0.31% SCSS 0.17% Go 77.76% JavaScript 0.33% Makefile 0.47% Jsonnet 0.40%

identity-platform-login-ui's Introduction

Identity Platform Login UI

CI codecov OpenSSF Scorecard pre-commit Conventional Commits

GitHub Release Go Reference

This is the UI for the Canonical Identity Platform.

Running the UI

Build

To create a binary with the UI you need to run:

make npm-build build

Please don't run them in parallel, build requires the target cmd/ui/dist which, unless the js code has been build independently, requires npm-build If you want to skip the npm-build make sure the js artifacts are in the ui/dist folder (check the Makefile for more advanced information).

This will:

  • build the js code
  • produce a binary called app which you can run with:
PORT=<port number> ./cmd/app

Environment variables

Code dealing with the environment variables resides in here where each attribute has an annotation which is the lowercase of the environment variable name.

At the moment the application is sourcing the following from the environment:

  • OTEL_GRPC_ENDPOINT - needed if we want to use the OTel gRPC exporter for traces
  • OTEL_HTTP_ENDPOINT - needed if we want to use the OTel HTTP exporter for traces (if gRPC is specified this gets unused)
  • TRACING_ENABLED - switch for tracing, defaults to enabled (true)
  • LOG_LEVEL - log level, defaults to error
  • LOG_FILE - log file which the log rotator will write into. default to log.txt. Make sure application user has permissions to write.
  • PORT - HTTP server port, defaults to 8080
  • BASE_URL - the base url that the application will be running on
  • KRATOS_PUBLIC_URL - address of Kratos Public APIs
  • KRATOS_ADMIN_URL - address of Kratos Admin APIs
  • HYDRA_ADMIN_URL - address of Hydra admin APIs
  • OPENFGA_API_SCHEME - the OpenFGA API scheme
  • OPENFGA_API_HOST - the OpenFGA API host name
  • OPENFGA_STORE_ID - the OpenFGA store ID to use
  • OPENFGA_MODEL_ID - the OpenFGA model ID to use. If not specified, a new model will be created
  • MFA_ENABLED - whether MFA is enabled and enforced, defaults to true

Container

To build the UI OCI image, you need rockcraft. To install rockcraft run:

sudo snap install rockcraft --channel=latest/edge --classic

To build the image:

rockcraft pack

In order to run the produced image with docker:

# Import the image to Docker
sudo /snap/rockcraft/current/bin/skopeo --insecure-policy \
    copy oci-archive:./identity-platform-login-ui_0.1_amd64.rock \
    docker-daemon:localhost:32000/identity-platform-login-ui:registry
# Run the image
docker run -d \
  -it \
  --rm \
  -p 8080:8080 \
  --name login-ui \
  localhost:32000/identity-platform-login-ui:registry start login-ui

Try it out

To try the identity-platform login UI, you can use the docker-compose.yml.

Please install docker and docker-compose.

You need to have a registered GitHub OAuth application to use for logging in. To register a GitHub OAuth application:

  1. Go to https://github.com/settings/applications/new. The application name and homepage URL do not matter, but the Authorization callback URL must be http://localhost:4433/self-service/methods/oidc/callback/github.
  2. Generate a client secret
  3. Create a file called .env on the root of the repository and paste your client credentials:
CLIENT_ID=<client_id>
CLIENT_SECRET=<client_secret>

From the root folder of the repository, run the docker-compose:

docker compose up

To test the authorization code flow you can use the Ory Hydra CLI:

To install the Ory Hydra CLI follow the instructions.

code_client=$(hydra create client \
  --endpoint http://localhost:4445 \
  --name grafana \
  --grant-type authorization_code,refresh_token \
  --response-type code \
  --format json \
  --scope openid,offline_access,email,profile \
  --redirect-uri http://127.0.0.1:4446/callback \
  --audience app_client \
)
hydra perform authorization-code \
  --endpoint http://localhost:4444 \
  --client-id `echo "$code_client" | yq .client_id` \
  --client-secret  `echo "$code_client" | yq .client_secret` \
  --scope openid,profile,email,offline_access

identity-platform-login-ui's People

Contributors

nsklikas avatar shipperizer avatar canonical-iam avatar renovate[bot] avatar bencekov avatar natalian98 avatar edlerd avatar barcomasile avatar github-actions[bot] avatar wood-push-melon avatar lorumic avatar

Stargazers

Mikhail P. avatar Tuan Anh avatar Jonas Hungershausen avatar  avatar  avatar 3JoB SRA avatar Denis Pershin avatar Avenbreaks avatar Alexandra Bakalova avatar

Watchers

James Cloos avatar José Tapadas Alves avatar Peter Balazs Polgar avatar Martin Storey avatar Giulia Zanchi avatar MariaPaula Trujillo avatar Amy Pattanasethanon avatar Guillaume Belanger avatar  avatar  avatar

identity-platform-login-ui's Issues

Improve UI codebase to avoid unnecessary re-renders

Description

Throughout the frontend React.js-based codebase inline functions are used and passed to components, which causes some unnecessary re-renders. This can be easily improved by leveraging the library function useCallback with the proper dependecies parameter. Also, some use of the useMemo can be leveraged to improve components where possible.
In general, this issue is to push for the UI code to follow the basic guidelines of React base application development.

Hydra config

In docker compose, i added
hostname: hydra.localhost
to hydra so that i could access it with my browser when running docker compose.

This required a change in hydra.yaml to urls.self.public - had to set it to
http://hydra.localhost:4444

CA bundle for HTTPS communication with LetsEncrypt

Hydra and Kratos dependencies will eventually be hosted behind HTTPS and Login UI will need to be able to communicate securely with these API

to get this working we should aim at implementing canonical/identity-platform-login-ui-operator#109 as soon as possible but as a stop gap solution we could exploit the same way we are doing for kratos rock https://github.com/canonical/kratos-rock/blob/main/rockcraft.yaml#L38-L57

this would cover the case where we are using publicly trusted CAs which have their CA bundle packaged in the ca-certificates debian package

support for self-signed certificates would still require canonical/identity-platform-login-ui-operator#109 to be implemented

Hydra DB migration does not appear to work

With docker compose the hydra DB migration does not appear to work.
I had to use the hydra CLI (in the hydra container) to run the migrations, then it started working.

Do not proxy all headers

Currently the backend proxies all of the headers that it gets from hydra/kratos to the UI, except for a few of them.
We need be more explicit about what we proxy to the UI, we need to specify exactly which headers we want to proxy. I think that only the cookies need to be proxied, but we should investigate it further.

Add authorization to local identity provider

We should consider the local kratos IdP as an additional provider and filter it based on openfga:

  • add a default name for the local idp provider
  • update the FilterFlowProviderList so that the password method is not enabled for certain applications

Sign in page not loading correctly

The login logic is currently tied to hydra. If you try to go to /ui/reset_password without a session, you'll get redirected to sign in but the page will be shown as loading:
image

This is due to missing login_challenge parameter value. Similar bug can be observed when going directly to http://localhost:4455/ui/login.

Error message too verbose

When an error message occurs the browser displays a verbose json error message. It should be trimmed to only contain relevant information for the end user.

Hydra fork does not work with kratos 1.1.0

With the addition of token lifespans to the client configuration, hydra 2.3.0(fork) does not work with with kratos 1.1.0. The reason is that when Kratos tries to fetch the hydra login flow using the login_challenge, the flow that hydra returns includes the client. The client metadata contain the new lifespan fields and kratos throws an error because it does not allow extra fields when parsing the hydra responses. This issue does not occur with kratos v1.0.0

To overcome this we could remove the hydra configuration from kratos and handle the flow from the login UI.

To reproduce this you can:

code_client=$(hydra create client \
  --endpoint http://localhost:4445 \
  --grant-type authorization_code,refresh_token,urn:ietf:params:oauth:grant-type:device_code \
  --response-type code \
  --format json \
  --scope openid,offline_access,email,profile \
  --redirect-uri http://127.0.0.1:4446/callback \
  --audience app_client \
)
curl -X POST localhost:4444/oauth2/device/auth \
  -d "scope=openid email offline_access" \
  -d client_id=`echo "$code_client" | yq .client_id` \
  -u `echo "$code_client" | yq .client_id`:`echo "$code_client" | yq .client_secret`
  • If you go to the returned verification_uri and enter the user_code, you will get the following Kratos error:
kratos                        | time=2024-05-01T11:08:02Z level=info msg=An error occurred while handling a request func=github.com/ory/x/logrusx.(*Logger).ReportError file=/go/pkg/mod/github.com/ory/[email protected]/logrusx/logrus.go:230 audience=application error=map[debug:json: unknown field "device_authorization_grant_id_token_lifespan" details:map[status_code:200] message:The request was malformed or contained invalid parameters reason:Unable to get OAuth 2.0 Login Challenge. stack_trace:
kratos                        | github.com/ory/kratos/hydra.(*DefaultHydra).GetLoginRequest
kratos                        |         /project/hydra/hydra.go:169
kratos                        | github.com/ory/kratos/selfservice/flow/login.(*Handler).createBrowserLoginFlow
kratos                        |         /project/selfservice/flow/login/handler.go:456
kratos                        | github.com/ory/kratos/x.(*RouterPublic).GET.NoCacheHandle.func1
kratos                        |         /project/x/nocache.go:21
kratos                        | github.com/ory/kratos/x.(*RouterPublic).Handle.NoCacheHandle.func1
kratos                        |         /project/x/nocache.go:21
kratos                        | github.com/julienschmidt/httprouter.(*Router).ServeHTTP
kratos                        |         /go/pkg/mod/github.com/julienschmidt/[email protected]/router.go:387
kratos                        | github.com/ory/nosurf.(*CSRFHandler).handleSuccess
kratos                        |         /go/pkg/mod/github.com/ory/[email protected]/handler.go:234
kratos                        | github.com/ory/nosurf.(*CSRFHandler).ServeHTTP
kratos                        |         /go/pkg/mod/github.com/ory/[email protected]/handler.go:191
kratos                        | github.com/urfave/negroni.(*Negroni).UseHandler.Wrap.func1
kratos                        |         /go/pkg/mod/github.com/urfave/[email protected]/negroni.go:46
kratos                        | github.com/urfave/negroni.HandlerFunc.ServeHTTP
kratos                        |         /go/pkg/mod/github.com/urfave/[email protected]/negroni.go:29
kratos                        | github.com/urfave/negroni.middleware.ServeHTTP
kratos                        |         /go/pkg/mod/github.com/urfave/[email protected]/negroni.go:38
kratos                        | github.com/ory/kratos/x.glob..func1
kratos                        |         /project/x/clean_url.go:15
kratos                        | github.com/urfave/negroni.HandlerFunc.ServeHTTP
kratos                        |         /go/pkg/mod/github.com/urfave/[email protected]/negroni.go:29
kratos                        | github.com/urfave/negroni.middleware.ServeHTTP
kratos                        |         /go/pkg/mod/github.com/urfave/[email protected]/negroni.go:38
kratos                        | github.com/rs/cors.(*Cors).ServeHTTP
kratos                        |         /go/pkg/mod/github.com/rs/[email protected]/cors.go:266
kratos                        | github.com/ory/kratos/cmd/daemon.servePublic.func1
kratos                        |         /project/cmd/daemon/serve.go:114
kratos                        | github.com/urfave/negroni.HandlerFunc.ServeHTTP
kratos                        |         /go/pkg/mod/github.com/urfave/[email protected]/negroni.go:29
kratos                        | github.com/urfave/negroni.middleware.ServeHTTP
kratos                        |         /go/pkg/mod/github.com/urfave/[email protected]/negroni.go:38
kratos                        | net/http.HandlerFunc.ServeHTTP
kratos                        |         /usr/local/go/src/net/http/server.go:2136
kratos                        | github.com/prometheus/client_golang/prometheus/promhttp.InstrumentHandlerResponseSize.func1
kratos                        |         /go/pkg/mod/github.com/prometheus/[email protected]/prometheus/promhttp/instrument_server.go:284
kratos                        | net/http.HandlerFunc.ServeHTTP
kratos                        |         /usr/local/go/src/net/http/server.go:2136
kratos                        | github.com/prometheus/client_golang/prometheus/promhttp.InstrumentHandlerCounter.func1
kratos                        |         /go/pkg/mod/github.com/prometheus/[email protected]/prometheus/promhttp/instrument_server.go:142
kratos                        | net/http.HandlerFunc.ServeHTTP
kratos                        |         /usr/local/go/src/net/http/server.go:2136
kratos                        | github.com/prometheus/client_golang/prometheus/promhttp.InstrumentHandlerDuration.func1
kratos                        |         /go/pkg/mod/github.com/prometheus/[email protected]/prometheus/promhttp/instrument_server.go:92
kratos                        | net/http.HandlerFunc.ServeHTTP
kratos                        |         /usr/local/go/src/net/http/server.go:2136
kratos                        | github.com/prometheus/client_golang/prometheus/promhttp.InstrumentHandlerDuration.func2
kratos                        |         /go/pkg/mod/github.com/prometheus/[email protected]/prometheus/promhttp/instrument_server.go:104
kratos                        | net/http.HandlerFunc.ServeHTTP
kratos                        |         /usr/local/go/src/net/http/server.go:2136
kratos                        | github.com/prometheus/client_golang/prometheus/promhttp.InstrumentHandlerRequestSize.func1
kratos                        |         /go/pkg/mod/github.com/prometheus/[email protected]/prometheus/promhttp/instrument_server.go:234
kratos                        |         /usr/local/go/src/net/http/server.go:2136
kratos                        | github.com/ory/x/prometheusx.Metrics.Instrument.Metrics.instrumentHandlerStatusBucket.func1
kratos                        |         /go/pkg/mod/github.com/ory/[email protected]/prometheusx/metrics.go:115
kratos                        | net/http.HandlerFunc.ServeHTTP
kratos                        |         /usr/local/go/src/net/http/server.go:2136
kratos                        | github.com/ory/x/prometheusx.(*MetricsManager).ServeHTTP
kratos                        |         /go/pkg/mod/github.com/ory/[email protected]/prometheusx/middleware.go:41
kratos                        | github.com/urfave/negroni.middleware.ServeHTTP

Login UI requires openfga deployment

Using the latest image, login ui requires openfga deployment in order to work, otherwise it fails to return the allowed identity providers even if AUTHORIZATION_ENABLED=false.

poc-kratos-selfservice-ui-node-1  | 2024-02-01T14:27:46.199Z [login-ui] github.com/canonical/identity-platform-login-ui/pkg/kratos.(*Service).CheckAllowedProvider(0xc000280720, {0xf98500?, 0x1599f00?}, 0xc000150000, 0xc00021aa80)
poc-kratos-selfservice-ui-node-1  | 2024-02-01T14:27:46.199Z [login-ui] 	/root/parts/go-build/build/pkg/kratos/service.go:173

To reproduce:
Set up a docker environment with kratos, hydra and login ui (for example https://github.com/natalian98/oathkeeper-poc/tree/test-with-httpbin) pinning the login ui version to latest

422 HTTP code on provider selection

When the user gets redirected to the login page, they are presented with a set of providers to choose from. When they click on a provider, an XHR request is done to the /self-service/login endpoint. The backend responds with a 422 code and a URL to redirect to (the authn endpoint).

This happens because the application type we send is application/json, if the application type is changed to application/x-www-form-urlencoded, the status code should change to 303. It is not enough to add that content type to the frontend headers, as the ory go client does not allow us to set the content type when making the request (at least I couldn't figure out how to do it).

We could handle this in the backend (ie convert the 422 to a 303 as long as the response body is valid).

`Failed to get login flow` when going back in the browser history

If you log in with email and password, login ui redirects to complete the 2fa. If instead of providing it you go back in the browser and attempt to sign in again, a Failed to get login flow error will be displayed:
image
In login ui logs:

"message":"Error when getting login flow: 403 Forbidden\n"

The solution is to 1) clear the browser cookies or 2) go again to the original url which will redirect to insert the password again (the email is cached).

Uncorrect method sent in the payload when `webauthn` is disabled

If webauthn config is disabled and you attempt to sign in using a security key, UI displays a message "invalid password". This is because it sends an invalid payload (with password method), so kratos renders this error message as it doesn't recognize it.

image

If webauthn is enabled and you attempt to sign in with a user that doesn't have any webauthn credentials, it will display the correct message because the method in the payload is correct:
image

UI handler globs up anything that is not previously matched by another handler

the URL pattern used in here tends to glob up anything that is not matched by any other register handler

this means that a POST /api/v0/version which should be served by the version handler adn return a 405 Method Not Allowed ends up insetad being server by the UI handler and return a 404 from the path /api/v0/version.html

need to pin it down to a more limited subset of URI, allegedly /login and /_next/* might be enough but got to validate that

Upgrade Kratos sdk to latest version

We need to update to the latest version of the kratos sdk and see if we can use that to discard the custom logic that we have for parsing Kratos requests.

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Rate-Limited

These updates are currently rate-limited. Click on a checkbox below to force their creation now.

  • chore(deps): update github/codeql-action action to v2.21.5
  • fix(deps): update module github.com/go-chi/chi/v5 to v5.0.10
  • chore(deps): update actions/checkout action to v3.6.0
  • chore(deps): update dependency @testing-library/jest-dom to v5.17.0
  • chore(deps): update dependency eslint-config-prettier to v8.10.0
  • chore(deps): update dependency eslint-plugin-react to v7.33.2
  • fix(deps): update dependency @canonical/react-components to v0.47.0
  • fix(deps): update dependency sass-embedded to v1.66.1
  • fix(deps): update module go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp to v0.43.0
  • fix(deps): update module go.opentelemetry.io/contrib/propagators/jaeger to v1.18.0
  • fix(deps): update module go.uber.org/zap to v1.25.0
  • fix(deps): update opentelemetry-go monorepo to v1.17.0 (go.opentelemetry.io/otel, go.opentelemetry.io/otel/exporters/otlp/otlptrace, go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc, go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp, go.opentelemetry.io/otel/exporters/stdout/stdouttrace, go.opentelemetry.io/otel/sdk, go.opentelemetry.io/otel/trace)
  • chore(deps): update dependency @testing-library/jest-dom to v6
  • chore(deps): update dependency @typescript-eslint/eslint-plugin to v6
  • chore(deps): update dependency eslint-config-prettier to v9
  • chore(deps): update dependency eslint-plugin-prettier to v5
  • fix(deps): update dependency vanilla-framework to v4
  • fix(deps): update module github.com/ory/kratos-client-go to v1
  • 🔐 Create all rate-limited PRs at once 🔐

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Detected dependencies

github-actions
.github/workflows/build.yaml
  • actions/checkout v3
  • actions/upload-artifact v3
  • actions/upload-artifact v3
.github/workflows/codeql-analysis.yaml
  • actions/checkout v3
  • github/codeql-action v2
  • github/codeql-action v2
  • github/codeql-action v2
.github/workflows/ossf.yaml
  • actions/checkout v3.5.3@c85c95e3d7251135ab7dc9ce3241c5835cc595a9
  • ossf/scorecard-action v2.2.0@08b4669551908b1024bb425080c797723083c031
  • actions/upload-artifact v3.1.2@0b7f8abb1508181956e8e162db84b466c27e18ce
  • github/codeql-action v2.21.4@a09933a12a80f87b87005513f0abb1494c27a716
.github/workflows/publish.yaml
  • actions/checkout v3
  • actions/download-artifact v3
.github/workflows/release.yaml
  • google-github-actions/release-please-action v3
  • actions/checkout v3
.github/workflows/scan.yaml
  • github/codeql-action v2
.github/workflows/unittest.yaml
  • actions/checkout v3
  • actions/setup-go v4
  • actions/setup-node v3
  • codecov/codecov-action v3
  • actions/upload-artifact v3
gomod
go.mod
  • go 1.19
  • github.com/go-chi/chi/v5 v5.0.8
  • github.com/go-chi/cors v1.2.1
  • github.com/golang/mock v1.6.0
  • github.com/kelseyhightower/envconfig v1.4.0
  • github.com/ory/hydra-client-go/v2 v2.1.1
  • github.com/ory/kratos-client-go v0.13.1
  • github.com/prometheus/client_golang v1.16.0
  • github.com/stretchr/testify v1.8.4
  • go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.42.0
  • go.opentelemetry.io/contrib/propagators/jaeger v1.17.0
  • go.opentelemetry.io/otel v1.16.0
  • go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.16.0
  • go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.16.0
  • go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.16.0
  • go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.16.0
  • go.opentelemetry.io/otel/sdk v1.16.0
  • go.opentelemetry.io/otel/trace v1.16.0
  • go.uber.org/zap v1.24.0
  • gopkg.in/natefinch/lumberjack.v2 v2.2.1
npm
ui/package.json
  • @canonical/react-components 0.42.0
  • @ory/client 1.1.39
  • @ory/integrations 1.1.1
  • next 13.4.7
  • react 18.2.0
  • react-toastify 9.1.3
  • sass-embedded 1.63.6
  • vanilla-framework 3.14.0
  • @next/eslint-plugin-next 13.4.7
  • @testing-library/jest-dom 5.16.5
  • @testing-library/react 14.0.0
  • @testing-library/user-event 14.4.3
  • @typescript-eslint/eslint-plugin 5.60.0
  • autoprefixer 10.4.14
  • eslint 8.43.0
  • eslint-config-prettier 8.8.0
  • eslint-plugin-prettier 4.2.1
  • eslint-plugin-react 7.32.2
  • postcss 8.4.24
  • postcss-cli 10.1.0
  • prettier 2.8.8
  • typescript 5.1.3
  • node 18

  • Check this box to trigger a request for Renovate to run again on this repository

No redirection on first login

By deploying the bundle found on canonical/iam-bundle#273, if I create an admin account through the kratos juju cli (juju run kratos/0 create-admin-account [email protected] password=123a username=aba) and I try to login via Hydra, I will be asked to register my authenticator and then I will end up in the setup_complete page instead of being redirected back to Hydra.

Add version command

Add functionality to display application version when called with an appropriate flag.

Shorter 2FA lifetime

The kratos' session currently lasts for too long, should we ask the users to provide OTP more often?

This would mean to have 2 lifetimes for the user session, one for 1st FA (username/password) and one for 2nd FA (totp). Not sure if this makes, but I think that this is common for IdPs.

Kratos sdk v1.0.0 is broken

With the upgrade to kratos sdk v1.0.0 the parsing of the LoginFlow objects returned from Kratos is broken. See relevant issue ory/sdk#291.

The error that we get is:

2023-10-12T09:36:47.418Z [login-ui] {"severity":"error","@timestamp":"2023-10-12T09:36:47.418687728Z","message":"Error when marshalling Json: json: error calling MarshalJSON for type client.UiContainer: json: error calling MarshalJSON for type client.UiNode: json: error calling MarshalJSON for type client.UiNodeAttributes: unexpected end of JSON input\n"}

The payload is:

{"id":"26c72fd5-7abf-4752-bf08-7a19812f4ad4","oauth2_login_challenge":"28807b1825b042829aefc936196de0c6","oauth2_login_request":{"challenge":"28807b1825b042829aefc936196de0c6","client":{"allowed_cors_origins":[],"audience":[],"client_id":"32affc9c-24ae-4622-87a6-77ead7e34153","client_name":"grafana","client_secret_expires_at":0,"client_uri":"","contacts":[],"created_at":"2023-10-12T10:06:26Z","grant_types":["authorization_code","refresh_token"],"jwks":{},"logo_uri":"","metadata":{},"owner":"","policy_uri":"","redirect_uris":["http://localhost:2345/login/generic_oauth"],"request_object_signing_alg":"RS256","response_types":["code","id_token"],"scope":"openid offline_access email","subject_type":"public","token_endpoint_auth_method":"client_secret_basic","tos_uri":"","updated_at":"2023-10-12T10:06:25.984842Z","userinfo_signed_response_alg":"none"},"oidc_context":{},"request_url":"http://localhost:4444/oauth2/auth?client_id=32affc9c-24ae-4622-87a6-77ead7e34153\u0026redirect_uri=http%3A%2F%2Flocalhost%3A2345%2Flogin%2Fgeneric_oauth\u0026response_type=code\u0026scope=openid+offline_access+email\u0026state=R0iwnafytzqqRIqIjsNHmP9Y7RsJZTNtx0M69hNB1Ec%3D","requested_access_token_audience":[],"requested_scope":["openid","offline_access","email"],"session_id":"1f7f4e17-c73b-445b-8e81-b4b1cecd78d4","skip":false,"subject":""},"type":"browser","expires_at":"2023-10-12T12:04:19.819204252Z","issued_at":"2023-10-12T11:04:19.819204252Z","request_url":"http://localhost:4433/self-service/login/browser?aal=\u0026login_challenge=28807b1825b042829aefc936196de0c6\u0026refresh=true\u0026return_to=http%3A%2F%2Flocalhost%3A4455%2Fui%2Flogin%3Flogin_challenge%3D28807b1825b042829aefc936196de0c6","return_to":"http://localhost:4455/ui/login?login_challenge=28807b1825b042829aefc936196de0c6","ui":{"action":"http://localhost:4433/self-service/login?flow=26c72fd5-7abf-4752-bf08-7a19812f4ad4","method":"POST","nodes":[{"type":"input","group":"oidc","attributes":{"name":"provider","type":"submit","value":"microsoft_cccca7a7a3666c2bc336a09713596333b5d02fbc","disabled":false,"node_type":"input"},"messages":[],"meta":{"label":{"id":1010002,"text":"Sign in with microsoft_cccca7a7a3666c2bc336a09713596333b5d02fbc","type":"info","context":{"provider":"microsoft_cccca7a7a3666c2bc336a09713596333b5d02fbc"}}}},{"type":"input","group":"default","attributes":{"name":"csrf_token","type":"hidden","value":"wlTu4l6D5Frw0IVXqgwXpZXMlz/p7ub62JJCcbajaTIBkkzi/wQcOcsqdqEetZ8y1FZTZsJOVrIDVV6JSLTFLA==","required":true,"disabled":false,"node_type":"input"},"messages":[],"meta":{}}]},"created_at":"2023-10-12T11:04:19.824634Z","updated_at":"2023-10-12T11:04:19.824634Z","refresh":false,"requested_aal":"aal1"}

Quick summary of the issue:

The problem stems from the addition of this line. For some reason the Kratos sdk in the kratos repo does not have this line.

The reason for the error is that the attributes can't be unmarshalled into the go struct because all types of attributes match in this function.

Until this is fixed we should downgrade to v0.13.1.

Action Required: Fix Renovate Configuration

There is an error with this repository's Renovate configuration that needs to be fixed. As a precaution, Renovate will stop PRs until it is resolved.

Location: renovate.json
Error type: Invalid JSON (parsing failed)
Message: Syntax error near ", ],

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.