O token OIDC é uma ferramenta que expõe, aloca, acessa e atualiza tokens de um provedor de identidade compatível com OIDC. Isso é útil para configurar vários serviços de nuvem para funcionar com o Unreal Editor, como um Cloud DDC. Esta página fornece informações sobre como configurar a ferramenta de token OIDC e provedores de identidade.
Configuração
O arquivo de configuração pode ser colocado em Engine\Programs\OidcToken\oidc-configuration.json ou <Game>\Programs\OidcToken\oidc-configuration.json
Este é um exemplo da aparência do arquivo de configuração:
{
"OidcToken": {
"Providers": {
"MyOwnProvider": {
"ServerUri": "https://<url-to-your-provider>",
Configuração de um provedor de identidade
Esta seção explica como definir alguns provedores de identidade (IdP) comuns.
Okta
Você precisa definir os seguintes itens para usar o Okta como um IdP:
Um cliente (aplicativo) para login interativo (por usuários).
Um servidor de autenticação personalizado para controlar como o Okta mapeia declarações e escopos e alguns grupos aos quais você pode atribuir usuários para gerenciar o controle de acesso.
Se você quiser executar isso em uma fazenda de compilação onde o login interativo não é possível, precisará configurar outro cliente (aplicativo) para permitir logins.
O Okta não é compatível com logins OIDC sem servidores de autenticação personalizados. Para definir um, confira a documentação do Okta sobre servidores de autenticação.
Para configurar o Okta como um provedor de identidade, siga estes passos:
Abra o painel de administração do Okta.
Clicar em Aplicativos > Aplicativos.
Crie o Cliente para login interativo e habilite os seguintes tipos de concessão:
Tokens de atualização
Código de autorização
Recomendamos especificar vários URLs de início de sessão em localhost. Por exemplo:
http://localhost:8749/oidc-token
http://localhost:8750/oidc-token
http://localhost:8751/oidc-token
http://localhost:8752/oidc-token
http://localhost:8753/oidc-token
http://localhost:8754/oidc-token
Isso possibilita que o aplicativo seja executado em várias portas locais durante o processo de login, o que evita problemas de a porta estar ocupada.
As portas listadas acima são um exemplo arbitrário. Escolha as portas que atendam às suas necessidades.
Configure o cliente de login autônomo, que é semelhante ao cliente estabelecido nas etapas anteriores, mas com as seguintes alterações:
Use o tipo de concessão Credenciais de Cliente.
Não é necessário especificar nenhum URL de início de sessão.
Isso exige que você use objetos de perfil com o cliente. Para obter exemplos de como atualizar o perfil criado, consulte a documentação do Okta sobre atualização de atributos de perfil.
Depois de criar a credencial de cliente que deseja usar para logins autônomos, envie uma carga útil para ela, semelhante ao exemplo a seguir:
C++"profile": { "clientCredentialsGroups": [ "app-ue-storage-project-your-project-name" ] }Atualize a declaração de grupos no servidor de autenticação personalizado com as seguintes diretrizes:
Você pode mapear grupos de usuários da forma que quiser, mas precisa criar pelo menos um grupo que inclua com precisão todos os usuários que você deseja que tenham acesso. Na Epic Games, geralmente temos um por projeto.
Você também precisa criar um grupo de administradores para usuários com algum tipo de acesso elevado.
Use uma convenção de nomenclatura que facilite a identificação dos grupos que deseja usar. Isso ajuda a garantir que você envie apenas os grupos que se aplicam aos recursos da Unreal Engine como parte dos tokens, e não todos os grupos aos quais um usuário pertence.
Certifique-se de atribuir pelo menos um usuário a cada grupo ao criá-los.
Na página de administração do Okta, configure o servidor de autenticação personalizado em Segurança> API.
Os servidores de autenticação personalizados são um complemento do Okta que pode não estar disponível para você, mas é necessário para o Okta processar logins OIDC.
Para criar o servidor de autenticação, clique no botão Criar servidor de autenticação.  Esse servidor de autenticação não é específico para Cloud DDC, mas sim algo que você pode usar para qualquer serviço da Unreal Engine que você queira usar.
Edite o servidor de autenticação e configure as Políticas de Acesso. Crie uma política para cada cliente e defina-a para permitir que o cliente faça login.
Abra Declarações para o tipo de token de acesso. Em seguida, configure uma declaração Grupos para filtrar os grupos que deseja usar e inclua
clientCredentialsGroups. Use esta expressão personalizada:C++(appuser != null) ? Arrays.flatten( Groups.startsWith("OKTA", "app-ue-", 100) == null ? {} : Groups.startsWith("OKTA", "app-ue-", 100) ) : app.profile.clientCredentialsGroup1sIsso filtra os grupos que começam com
app-ue.Configure um escopo cache_access que você pode usar para logins em fazendas de compilação.
Depois de concluídas as etapas acima, o Okta estará pronto para servir como seu provedor de identidade.
Como testar o Okta como seu provedor de identidade
Para testar o Okta, siga estas etapas:
No servidor de autenticação, acesse a Pré-visualização do Token.
Escolha o cliente Login interativo com o tipo de concessão Código de autorização.
Selecione o usuário atribuído ao grupo correto.
Na pré-visualização desse token, o JSON exibido deve incluir uma matriz de grupos que contém os nomes dos grupos atribuídos.
Microsoft Entra (AzureAD)
Para definir o Microsoft Entra como um provedor de identidade, siga estas etapas:
Acesse o Portal do Microsoft Azure.
Clique no serviço Microsoft Entra.
Vá para Registro de aplicativo e crie um registro de aplicativo para os logins de desktop. Ele deve ter as seguintes configurações:
Inquilino único
Contém um conjunto de URIs de redirecionamento localhost usando a opção de cliente público/nativo. Veja a seguir alguns exemplos de como seus URIs de redirecionamento podem ser:
http://localhost:8749/oidc-token
http://localhost:8750/oidc-token
http://localhost:8751/oidc-token
http://localhost:8752/oidc-token
http://localhost:8753/oidc-token
http://localhost:8754/oidc-token
Anote o
ID do clientedeste aplicativo.Vá para Configuração do token e adicione uma configuração de declaração de grupos para usar Grupos atribuídos ao aplicativo.
Crie um grupo de segurança para a função de usuário do projeto. Atribua esse grupo de segurança à função e adicione todos os usuários desejados ao grupo de segurança.
Crie as seguintes funções do aplicativo:
Usuário do Projeto (geralmente um por projeto)
Admin
A função de Usuário do Projeto precisa ser atribuível a usuários, grupos e aplicativos, enquanto a função Admin é apenas para usuários.
Volte para Registro do aplicativo e crie um aplicativo para o serviço de back-end (por exemplo, "Cloud DDC da Unreal").
Adicione um escopo de API ao novo aplicativo e nomeie como
user.access. Atribua oID de clientedo acesso ao aplicativo de desktop a essa API.Crie um novo registro de aplicativo separado para seus aplicativos de preparação e adicione um segredo de cliente a eles para que possam fazer login de forma autônoma (ou use identidade gerenciada ou algo semelhante, se preferir). Esse aplicativo também deve ter um papel de usuário do projeto.
Ao criar o arquivo
oidc-configuration.json, você encontrará o uri do servidor a ser usado no botão Endpoints para o registro do aplicativo. Geralmente é[https://login.microsoftonline.com/](https://login.microsoftonline.com/)<directory-tenant-id>/v2.0.Para ID do cliente, use o
id do clientedo aplicativo de desktop que você criou. O escopo precisa conter o escopo da API que você criou no serviço de back-end, e geralmente fica assim:offline_access profile openid api://<api scope guid>/user.access.
Depois de concluídas as etapas acima, o Microsoft Azure estará pronto para servir como seu provedor de identidade.