Examinar o Aplicativo Python e o SDK

Nesta seção da solução, você:

  • Examinar o comportamento e o código do aplicativo Web Python

  • Verifique os dados de diagnóstico associados às tentativas de log-in bem-sucedidas e malsucedidas que o aplicativo Web Python inicia no Oracle Identity Cloud Service

Examinar o Comportamento do Aplicativo Python

O comportamento do aplicativo Web Python segue o fluxo de autenticação de três etapas definido pelo tipo de concessão de código de autorização.

Para verificar todas as solicitações, respostas e redirecionamentos que o aplicativo e o Oracle Identity Cloud Service executam usando o Web browser, ative o modo Desenvolvedor do seu browser. Esta solução usa o Google Chrome.

  1. Execute o aplicativo Web Python.
  2. Abra um navegador da Web do Google Chrome, acesse o URL http://localhost:8080 e clique em Fazer login.
  3. Pressione F12, selecione a guia Rede e marque a caixa de seleção Preservar log. Marque essa caixa de seleção para ver toda a comunicação entre o aplicativo e o Oracle Identity Cloud Service.
  4. Na página Login, clique no ícone vermelho Oracle.

O registro de desenvolvedor do navegador deve mostrar o seguinte fluxo de eventos:

  1. O usuário solicita o recurso /auth/oracle e o Web browser recebe uma resposta de redirecionamento do aplicativo Web Python.
    Request URL: http://localhost:8000/auth/
    Request Method: GET
    Status Code: 302 Found
    
    Response Headers
    Location: https://idcs-1234.identity.domain.com/oauth2/v1/authorize?client_id=123456789abcdefghij&redirect_uri=http%3A%2F%2Flocalhost%3A8000%2Fcallback&response_type=code&scope=urn:opc:idm:t.user.me+openid&state=1234
  2. O Oracle Identity Cloud Service recebe a solicitação de código de autorização e apresenta a página Acessar.
    Request URL: https://idcs-1234.identity.domain.com/oauth2/v1/authorize?client_id=123456789abcdefghij&redirect_uri=http%3A%2F%2Flocalhost%3A8000%2Fcallback&response_type=code&scope=urn:opc:idm:t.user.me+openid&state=1234
    Request Method: GET
    Status Code: 303 See Other
     
    Response Headers
    Location:
    https://idcs-1234.identity.domain.com/ui/v1/signin
    Set-cookie: ORA_OCIS_REQ_1=[value has been omitted for readability]
  3. O usuário acessa o Oracle Identity Cloud Service. O Oracle Identity Cloud Service redireciona o Web browser para o URL de callback do aplicativo Web Python.
    Request URL:
    http://localhost:8000/callback/&code=[value has been omitted for readability]&state=1234
    Request Method: GET
    Status Code: 200 OK
     
    Response Headers
    Set-Cookie: sessionid=[value has been omitted for readability]

    Neste exemplo, o URL de callback redireciona o Web browser para a página Home com o token de acesso do usuário definido como um atributo de sessão.

Examinar o Aplicativo e os Logs do SDK

O aplicativo registra informações na janela da linha de comando. Você também pode ativar os logs do SDK.

Por padrão, o aplicativo de amostra registra informações do fluxo de autenticação na janela de linha de comando.
Starting development server at http://127.0.0.1:8000/
----------------------------------------
[21/Dec/2018 16:00:42] "GET /login/ HTTP/1.1" 200 2772
...
----------------- def auth(request) ---------------
config.json file = {'logoutSufix': '/oauth2/v1/userlogout', 'ClientSecret': 'abcde-12345-zyxvu-98765-qwerty', 'AudienceServiceUrl': 'https://idcs-abcd1234.identity.domain.com', 'BaseUrl': 'https://idcs-abcd1234.identity.domain.com', 'ClientId': '123456789abcdefghij, 'ConsoleLog': 'True', 'LogLevel': 'INFO', 'scope': 'urn:opc:idm:t.user.me openid', 'redirectURL': 'http://localhost:8000/callback', 'TokenIssuer': 'https://identity.domain.com/'}
[21/Dec/2018 16:00:48] "GET /auth/ HTTP/1.1" 302 0
[21/Dec/2018 16:01:08] "GET /callback?code=[value has been omitted for readability]&state=1234 HTTP/1.1" 301 0
----------------- def callback(request) ------------------
access_token = [value has been omitted for readability]

Siga as etapas abaixo para ativar o log-on do SDK para Python do Oracle Identity Cloud Service e examinar qualquer problema encontrado durante o desenvolvimento.
  1. Abra o arquivo config.json e substitua o valor de LogLevel por DEBUG.
  2. Salve o arquivo e reinicie o servidor Python

Verifique os Dados de Diagnóstico

Quando o aplicativo Web Python tenta acessar o Oracle Identity Cloud Service, as tentativas bem-sucedidas e malsucedidas são registradas nos arquivos de log de diagnóstico do Oracle Identity Cloud Service.

  1. Acesse a console do Oracle Identity Cloud Service.
  2. Na console, expanda a Gaveta de Navegação, clique em Definições e, em seguida, clique em Diagnóstico.
  3. Selecione View de Atividade como o tipo de diagnóstico e clique em Salvar.
  4. Sair do Oracle Identity Cloud Service.

O Oracle Identity Cloud Service captura dados de diagnóstico para os próximos 15 minutos.

  1. Conclua as etapas no tópico Executar o Aplicativo Python desta solução para exibir a página Login do aplicativo Web Python.
  2. Clique no ícone vermelho Oracle.
  3. Para fazer uma tentativa de acesso malsucedida, informe um nome de usuário ou uma senha incorreta na página Acessar do Oracle Identity Cloud Service.
  4. Para se conectar com êxito, informe seu nome de usuário e senha corretos.
  5. Use o aplicativo Web Python para sair do Oracle Identity Cloud Service.
  6. Acesse a console do Oracle Identity Cloud Service.
  7. Na console, expanda a Gaveta de Navegação, clique em Relatórios e, em seguida, clique em Dados de Diagnóstico.
  8. Selecione um intervalo de tempo de 15 Minutos, o tipo de log Exibição de Atividade, o formato de relatório CSV e clique em Fazer Download do Relatório.

O arquivo de log de diagnóstico inclui informações semelhantes às seguintes sobre as tentativas de acesso ao Oracle Identity Cloud Service.

Message: ID Token will be signed with User Tenant:idcs-abcd1234 Resource Tenant:idcs-abcd1234, clientId=123456789abcdefghij
Component: OAuth
Timestamp: [Date]
Actor ID: your.email@domain.com
---------------------------------------------------------------
...
---------------------------------------------------------------
Message: {"request":{"tenant":"idcs-abcd1234","grant types":"authorization_code","scopes":["urn:opc:idm:t.user.me"]},"user":{"id":"111111","name":"your.email@domain.com","tenant":"idcs-abcd1234","auth-type":"PASSWORD"},"client":{"id":"123456789abcdefghij","name":"Sample App","tenant":"idcs-abcd1234","auth-type":"PASSWORD"},"environment":{"isCSR":"false","onBehalfOfUser":"false"},"response":{"result":"ALLOWED","scopes":["urn:opc:idm:t.user.me"],"custom-claims":{"clientAppRoles":["Authenticated Client","Me"],"userAppRoles":["Authenticated","Global Viewer","Identity Domain Administrator"],"user_isAdmin":"true"}}}
Component: Authorization/getAllowedScopes
Timestamp: [Date]
Actor ID: your.email@domain.com
---------------------------------------------------------------
...
---------------------------------------------------------------
Message: {"Message":"SSO SignOn Policy evaluation result for user : 11111  is : effect:ALLOW,authenticationFactor:IDP,allowUserToSkip2FAEnrolment:false,2FAFrequency:SESSION,reAuthenticate:false,trustedDevice2FAFrequency:
Component:
Timestamp:
Actor ID:
---------------------------------------------------------------
...
---------------------------------------------------------------
Message: [PolicyEngineUtil.evaluatePolicy] Evaluating Default Sign-On Policy
Component: PolicyEngine
Timestamp: [Date]
Actor ID: uiSignin
---------------------------------------------------------------
...
---------------------------------------------------------------
Message: [PolicyEngineUtil.evaluateRule] Evaluating MFA rule
Component: PolicyEngine
Timestamp: [Date]
Actor ID: uiSignin
---------------------------------------------------------------
...
---------------------------------------------------------------
Message: [PolicyEngineUtil.evaluatePolicy] Evaluating Default Authentication Target App Policy
Component: PolicyEngine
Timestamp: [Date]
Actor ID: idcssso
---------------------------------------------------------------
...
---------------------------------------------------------------
Message: {"password":"********","authFactor":"USERNAME_PASSWORD","device":"{\"currentTime\":\"[date]",\"screenWidth\":1920,\"screenHeight\":1080,\"screenColorDepth\":24,\"screenPixelDepth\":24,\"windowPixelRatio\":1,\"language\":\"en\",\"userAgent\":\"Mozilla\/5.0 (Windows NT 10.0
Component:
Timestamp:
Actor ID:
---------------------------------------------------------------
...
---------------------------------------------------------------
Message: {"Message":"No session found so need to collect credentials","Redirecting to Login URL: ":https://idcs-abcd1234.identity.oraclecloud.com/ui/v1/signin}
Component: SSO
Timestamp: [Date]
Actor ID: Unauthenticated
---------------------------------------------------------------
...
---------------------------------------------------------------
 
Message: [PolicyEngineUtil.evaluatePolicy] Evaluating Default Identity Provider Policy
Component: PolicyEngine
Timestamp: [Date]
Actor ID: Unauthenticated
---------------------------------------------------------------
Message: Authorization Request, received parameters: scope[urn:opc:idm:t.user.me openid] response_type[code] state[1234] redirect_uri[http://localhost:8000/callback] client_id[123456789abcdefghij]
Component: OAuth
Timestamp: [Date]
Actor ID: Unauthenticated

Os logs mais recentes aparecem na parte superior do arquivo.